Section16 컬렉션 프레임워크
컬렉션 프레임워크
컬렉션 프레임워크 데이터를 다룰 때 사용되는 주요 자료구조를 말합니다. 컬렉션은 기존의 List, Map, Set 등의 자료 구조를 뜻하고 프레임워크는 클래스와 인터페이스를 묶어 놓은 개념입니다.
List 컬렉션
배열과 비슷하게 index로 객체를 관리합니다. 다만, 배열과는 다르게 크기의 제한이 없으며 삽입, 삭제, 변경의 기능이 자유롭습니다. List에는 대표적으로 ArrayList와 LinkedList 가 있습니다.
ArrayList
데이터를 순차적으로 저장합니다. 데이터가 삽입될 때마다 크기가 증가하고 배열을 삭제하면 공간이 줄어듭니다. index를 기준으로 값을 삽입하거나 추출합니다.
LinkedList
Node 객체를 기반으로 데이터를 저장합니다. Node 객체는 데이터와 자신 다음에 올 데이터의 주소를 값으로 가집니다.
ArrayList는 데이터를 출력하거나 검색할 경우에, LinkedList는 데이터의 삽입과 삭제가 빈번할 경우에 사용하면 더 좋은 성능을 보여줍니다.
Set 컬렉션
Set 컬렉션은 List 컬렉션과 다르게 객체의 저장 순서를 저장하지 않으며, 데이터의 중복을 허용하지 않습니다. 또한 데이터를 저장할 때 index를 부여하지 않기 때문에, 데이터가 입력된 순서로 출력된다는 보장이 없습니다. 대표적으로 HashSet이 있습니다.
Map 컬렉션
Map 컬렉션은 List, Set 컬렉션과 달리 Map Interface가 별도로 존재하며 데이터를 List 계열의 컬렉션과 다르게 처리합니다. Map은 key의 중복을 허용하지 않습니다. 만약 Key가 중복된다면 기존에 있던 Key에 해당하는 Value 값이 마지막으로 등록된 값으로 치환됩니다. 대표적으로 Map을 상속받아 구현한 HashMap, TreeMap, LinkedHashMap이 있습니다.
HashSet / HashMap
HashSet 또는 HashMap은 객체 데이터를 value 또는 Key로 할 경우, 중복 객체 체크를 위해 해당 객체의 hashCode() 와 equals() 메서드를 Override 하여 구현해야 합니다.