ArrayList
- Collection 프레임워크의 일부
- List 인터페이스를 상속 받아 사용
- → List<Integer> list = new ArrayList<>(); 가능한 이유
- 표준 배열보다 느리지만 많은 조작이 필요한 경우 유용하게 사용
- 객체가 추가되어 용량을 초과하면 자동으로 부족한 크기만큼 용량이 늘어남(마법의 장바구니)

출처 : https://crazykim2.tistory.com/558
Array(배열) vs ArrayList(리스트)
| 배열 | ArrayList | |
| 크기 | 고정(늘릴 수 없음) | 동적(가변적으로 늘어남) |
| 넣을 수 있는 것 | 기본형, 객체 | 객체 |
| 제네릭 사용 여부 | 불가능 | 가능 |
| 길이 | length 변수 | size() 메소드 |
| 데이터 추가 | arr[0] = 1; 할당 연산자 필요 정해진 크기 안에서 인덱스를 고려 |
list.add(1); add() 메소드 인덱스를 고려할 필요X |
| 데이터 삭제 | 불가능 | list.remove(0); |
| 데이터 수정 | arr[0] = 2; 할당 연산자 필요 |
list.set(0, 2); |
HashMap
· Collection 프레임워크의 일부
· Map 인터페이스를 상속 받아 사용
→ Map<String, Integer> hashmap = new HashMap<>(); 가능한 이유
· (키, 값)의 1대 1 구조로 데이터가 이루어짐
· 키는 고유한 속성, 값은 X
→ 키는 중복X(같은 키의 값을 삽입→ 해당 키의 값이 변경), 값은 중복O
ArrayList(리스트) vs HashMap
ArrayList와 HashMap의 가장 큰 차이는 키 값이다.
ArrayList는 단순한 int 값을 키로 가지지만 HashMap은 Object를 키로 가진다.
→ 검색에서 차이가 난다.
→ 근본적으로 사용하는 용도가 다름
- ArrayList : 단순히 데이터를 입력하고 출력하는 용도
- HashMap : 데이터를 캐쉬해서 특정 키 값으로 데이터를 검색하여 사용하는 용도