본문 바로가기

RETROSPECT

[자바의 신2] 23장 회고

Set의 필요성

  • Collection을 확장한 배열과 비슷한 역할을 하는 3개의 인터페이스(List, Set, Queue)가 있다.
  • Set은 순서에 상관없이 데이터의 존재 유무를 확인하는 용도로 사용된다.

Set의 주요 클래스

  • HashSet : 순서가 필요 없는 데이터를 해시 테이블에 저장한다. Set 중에 성능이 가장 좋다.
  • TreeSet: 저장된 데이터의 값에 따라 정렬된다. HashSet보다 약간 느리다.
  • LinkedHashSet: 저장된 순서에 따라 정렬된다. 3개 중 가장 느리다.

HashSet

  • 로드팩터 = (데이터의 개수) / (저장 공간)
  • 로드 팩터가 클수록 공간은 넉넉해지지만 데이터를 찾는 시간이 증가한다.
  • 주요 메소드로는 add(), contains(), remove(), size(), isEmpty() 있다.

LinkedList

  • Java 1.2에 추가되었다.
  • 데이터의 추가및 삭제가 많을 때는 위치가 있는 ArrayList보다 효율적이다.
  • LinkedList는 List, Queue, Deque 인터페이스를 구현하고 있다.
  • Deque(Double Ended Queue)는 Java6에서 추가되었다. (발음은 'deck'이다.)
  • 혼동을 피하기 위해 addFirst(), addLast() 메소드를 위해 데이터를 추가하는 게 좋을 것 같다.
  • add() 메소드의 경우 원하는 위치에 넣을 때만 사용하는 게 좋을 것 같고, 그냥 데이터만 전달하면 addLast() 메서드처럼 동작한다.
  • 데이터를 찾을때는 getFirst(), peekFirst(), getLast(), peekLast()를 사용하는 게 좋을 것 같다.
  • 데이터를 삭제할때는 removeFirst(), removeLast()를 사용하는 게 좋을 것 같다.