LinkedHashSet — 삽입 순서를 유지하는 집합

LinkedHashSet — 삽입 순서를 유지하는 집합

LinkedHashSet<E>잘 정의된 만남 순서(encounter order)를 가진 Set 인터페이스의 해시 테이블 + 연결 리스트 구현이에요. HashSet과 달리 모든 항목을 통과하는 이중 연결 리스트를 유지해요. 이 연결 리스트가 만남 순서(순회 순서)를 정의하는데, 요소가 집합에 삽입된 순서(삽입 순서)예요.

출처: Java API Reference

본문

public class LinkedHashSet<E> extends HashSet<E>
    implements SequencedSet<E>, Cloneable, Serializable

가장 오래된 요소가 먼저, 가장 최근 요소가 마지막이에요. add로 요소를 다시 삽입해도 만남 순서는 바뀌지 않아요. addFirst/addLast로 이미 있는 요소의 순서를 바꿀 수 있어요.

이 구현은 HashSet의 불명확한 순서를 피하면서도 TreeSet에 비해 추가 비용이 없어요. 원본 집합의 구현과 무관하게 같은 순서의 복사본을 만들 수 있어요. 모든 선택적 Set/SequencedSet 연산을 제공하고 null 요소를 허용해요. 기본 연산(add, contains, remove)은 HashSet처럼 상수 시간이며, 연결 리스트 유지 비용 때문에 성능은 HashSet보다 약간 낮을 수 있어요.

생성자

  • LinkedHashSet(int initialCapacity, float loadFactor) / LinkedHashSet(int initialCapacity) / LinkedHashSet() / LinkedHashSet(Collection c) — 각각 지정된 크기·로드 팩터 또는 지정된 컬렉션의 요소로 만듭니다.

순서 관련 메서드

  • addFirst(E e) / addLast(E e) — 요소를 만남 순서의 처음/끝에 추가해요.
  • getFirst() / getLast() — 첫/마지막 요소를 반환해요.
  • removeFirst() / removeLast() — 첫/마지막 요소를 제거하고 반환해요.
  • reversed() — 반대 순서의 SequencedSet 뷰를 반환해요.

기타

  • spliterator() — late-binding이고 fail-fast인 Spliterator를 만들며 SIZED, DISTINCT, ORDERED 특성을 보고해요.
  • newLinkedHashSet(int numElements) — 기대 요소 수에 알맞은 빈 집합을 만들어요.

더 알아보기 (Learn more)