[JAVA]컬렉션 프레임워크 - List, Set, Map
카테고리: JAVA
[25] 컬렉션 프레임워크 - List, Set, Map
25.1. ArrayList vs LinkedList
- 둘다 자료의 순차적 구조를 구현한 클래스
- ArrayList는 배열을 구현한 클래스
- 논리적 순서와 물리적 순서가 동일함.
- LinkedList
- 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조
- 논리적으로 순차적인 구조
- 물리적으로는 순차적이지 않을수 있는 구조
- 자료를 저장하는 노드(Node)
- 자료(data)
- 다음 요소를 가리키는 링크(포인트)가 있음
| 자료(data) | 다음 요소 주소 |
- 자료가 추가 될때 노드 만큼의 메모리를 할당 받고 이전(previous) 노드의 링크로 연결함
25.2. HashSet 클래스
- Set 인터페이스를 구현
- 멤버의 중복 여부를 체크하기 위해 인스턴스의 동일성을 확인해야 함
- 동일성 구현을 위해 필요에 따라 equals()와 hashCode() 메서드를 재정의 함
- 아이디가 동일한 경우 같은 멤버이므로 중복되지 않도록 Member 클래스의 equals()와 hashCode() 메서드를 재정의함
25.3. TreeSet 클래스
- 객체의 정렬을 사용하는 클래스
- Set 인터페이스를 구현하여 중복을 허용하지 않고, 오름차순이나 내림차순으로 객체를 정렬할 수 있음.
- 내부적으로 이진검색트리(binary search tree)로 구현됨.
- 이진검색트리에 저장하기 위해 각 객체를 비교해야 함.
- 비교 대상이 되는 객체에 Comparable이나 Comparator 인터페이스를 구현 해야 TreeSet에 추가 될수 있음.
- 예) Member 클래스가 아이디가 오름차순으로 정렬되게 하기 위해 Comparable 인터페이스를 구현
- String, Interger 등 JDK의 많은 클래스들이 이미 Comparable을 구현했음
- String 클래스는 이미 Comparable 인터페이스가 구현되어 있으므로 오름차순으로 정렬되어 출력됨.
25.4. HashMap 클래스
- 쌍(pair)으로 자료를 관리
- Map 인터페이스를 구현한 클래스
- 가장 많이 사용되는 Map 인터페이스 기반 클래스
- key - value를 쌍으로 관리하는 메서드를 구현함
- 검색을 위한 자료구조
- key를 이용하여 값을 저장
- key를 이용하여 값을 꺼내오는 방식
- key가 되는 객체는 중복될수 없고 객체의 유일성을 비교를 위한 equals()와 hashCode() 메서드를 구현해야 함.
댓글 남기기