[JAVA]컬렉션 프레임워크 - List, Set, Map

Date:     Updated:

카테고리:

태그:

[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() 메서드를 구현해야 함.

JAVA 카테고리 내 다른 글 보러가기

댓글 남기기