배열의 문제점을 해결하고, 널리 알려져 있는 자료구조를 바탕으로 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색)
할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들을 포함시킨 것이다.
모든 컬렉션 클래스명은 구현한 인터페이스명이 포함되어 있어 한 눈에 클래스의 특징을 알 수 있다.
ex) HashMap 클래스는 Map 인터페이스를 구현한 것이다.
객체를 일렬로 늘어놓은 선형 자료구조이다. 인덱스로 모든 요소에 접근할 수 있으며, 중복 요소를 포함할 수 있다. null 값도 저장할 수 있지만 이 경우에는 해당 인덱스는 객체를 참조하지 않는다.
중복을 허용하지 않는 비선형 자료구조이다. 저장 순서가 보장되지 않기 때문에 무작위 접근(Random Access)를 허용하지 않는 대신 전체 객체를 한 번씩 반복해서 가져오는 반복자(Iterator)를 제공한다. null 값을 허용하지만 중복없이 하나만 저장할 수 있다.
Hash 알고리즘을 이용하여 값을 저장하는 방식
Hash
저장할 값을 어떤 값과도 중복되지 않는 HashCode로 변환하고 이 HashCode 값을 주소로 하여 값을 저장하는 방식
Hash의 경우 값 자체가 메모리가 되기 때문에, 같은 위치에 두 개의 값을 저장할 수 없다.
키(Key)와 값(Value)으로 구성된 객체를 저장하는 자료구조이다.
Key는 중복을 허용하지 않지만, Value는 중복을 허용한다. 따라서, 중복되는 Key값이 저장될 경우 기존의 Value는 새로운 Value로 바뀐다.
[참고]