[66해빗 페이백 챌린지] 19일차

tree·2023년 5월 20일
0

23. 자바랭 다음으로 많이 쓰는 애들은 컬렉션 - Part2(Set과 Queue)

23-1 Set이 왜 필요하지?

  • 중복을 방지하고, 어떤 데이터가 존재하는지 확인하기 위한 용도
  • Set 인터페이스를 구현한 클래스
    • HashSet
      • 순서가 필요 없음. 가장 성능 좋음
    • TreeSet
      • 데이터 값에 따라 정렬. HashSet보다 성능 약간 느림
    • LinkedHashSet
      • 연결된 목록 타입의 해시 테이블에 데이터 저장
      • 성능이 가장 안 좋음

23-2 HashSet에 대해서 파헤쳐 보자

  • HashSet의 상속 관계

    • java.lang.Object
    • java.util.AbstractCollection<E>
      • java.util.AbstractSet<E>
        • java.util.HashSet<E>
  • Set에서는 데이터가 같은지 확인하는 작업이 중요하다.

    • equals()와 hashCode()의 구현이 중요!

23-3 HashSet의 생성자들도 여러 종류가 있다

  • HashSet()

  • HashSet(Collection<? extends E> e)

  • HashSet(int initialCapacity)

  • HashSet(int initailCapacity, float loadFactor)

  • 로드 팩터(Load Factor)

    • 데이터의 개수/저장 공간의 크기
    • 데이터 개수가 늘어나 로드 팩터를 초과하면 더 큰 저장 공간을 만들어 재정리 작업(rehash)을 수행
      • 성능 저하 발생

23-4 HashSet의 주요 메소드를 살펴보자

  • 잘 아니까 그냥 넘어가자

23-5 Queue는 왜 필요할까?

  • LinkedList는 List, Queue, Deque를 구현
  • Queue
    • FIFO 자료 구조

23-6 LinkedList를 파헤쳐보자

  • LinkedList 상속 관계

    • java.lang.Object
      • java.util.AbstractCollection<E>
        • java.util.AbstractList<E>
          • java.util.AbstractSequentialList<E>
            • java.util.LinkedList<E>
  • AbstracSequentialList

    • add(), set(), remove()의 구현이 AbstractList와 다름

23-7 LinkedList의 생성자와 주요 메소드를 살펴보자

  • 요소를 추가할 때는 add가 붙은 메소드를 사용하는 것이 일관적이어서 좋다.

0개의 댓글