JavaTM Platform
Standard Ed. 6

java.util
클래스 LinkedHashSet<E>

java.lang.Object 
  상위를 확장 java.util.AbstractCollection <E>
      상위를 확장 java.util.AbstractSet <E>
          상위를 확장 java.util.HashSet <E>
              상위를 확장 java.util.LinkedHashSet<E>
형태 파라미터:
E - 이 세트가 보관 유지하는 요소의 형태
모든 구현된 인터페이스:
Serializable , Cloneable , Iterable <E>, Collection <E>, Set <E>


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

예측 가능한 반복 순서를 가지는 Set 인터페이스의 해시 테이블과 링크 리스트의 구현입니다. 이 구현은, 모든 구현의 엔트리를 거치는 이중의 링크 리스트를 보관 유지한다고 하는 점으로써,HashSet 와는 다릅니다. 링크 리스트는, 반복 순서를 정의합니다. 이 순서는, 요소가 세트에 삽입된 순서입니다 (삽입순서) . 요소를 세트에 「재삽입」하는 경우, 삽입순서는 영향을 받지 않습니다. 호출의 직전에,s.contains(e)true 를 돌려줄 때 s.add(e) 가 불려 갔을 경우, 요소 e 가 세트 s 에 재삽입됩니다.

이 구현에서는,TreeSet 관련의 부담의 증대를 지지 않고 ,HashSet 에 의한, 무지정의 일반적으로는 무질서한 순서로부터 클라이언트를 지킵니다. 이 구현을 사용해, 당초의 세트의 구현에 관계없이, 당초의 세트와 같은 순서를 가지는 세트의 카피를 생성할 수가 있습니다.

void foo(Set s) {
Set copy = new LinkedHashSet(s);
         ...
     }
 
모듈이 입력세트를 취득해, 카피해, 카피세트가 설정한 순서의 결과를 돌려주었을 경우, 이 기술은 특별히 도움이 됩니다. 일반적으로, 클라이언트는 제시와 같은 순서로 반환되는 것을 평가합니다.

이 클래스는, 옵션의 Set 오퍼레이션을 모두 제공해, null 요소를 허용 합니다. HashSet 와 같이, 해쉬 함수가 복수의 버킷으로 적절히 요소를 분산하면(자) 가정해, 기본의 오퍼레이션 (add,contains, 및 remove)에 일정시간의 퍼포먼스를 제공합니다. 퍼포먼스는, 1 개의 예외를 제외해, 링크 리스트를 보관 유지하는 부담증가에 의해,HashSet 의 퍼포먼스보다 조금 뒤떨어지는 경우가 있습니다. LinkedHashSet 의 반복에는, 용량에 관계없이, 세트의 「사이즈」에 비례한 시간이 필요하게 됩니다. HashSet 의 「용량」에 비례한 시간을 필요로 하므로,HashSet 의 반복은, 한층 더 비싸게 들 우려가 있습니다.

링크 해시 세트에는, 퍼포먼스에 영향을 미치는 파라미터가 2 개 있습니다. 「초기 용량」과「부하 계수」입니다. 이러한 파라미터는,HashSet 에 대해 정확하게 정의되고 있습니다. 다만, 이 클래스의 반복 회수는 용량에 의해 영향을 받지 않기 때문에, 초기 용량에 매우 비싼 값을 선택해도, 이 클래스에서는 HashSet 에 비해 그만큼 결과는 몹시는 없습니다.

이 구현은 동기화 되지 않습니다. 복수의 thread가 동시에 링크 해시 세트에 액세스 해, 그러한 thread의 적어도 1 개(살)이 구조적으로 세트를 변경하는 경우에는, 외부에서 동기를 잡을 필요가 있습니다. 일반적으로, 구조적인 변경은, 세트를 자연스럽게 캡슐화하는 특정의 객체로 동기를 잡는 것에 의해 달성됩니다. 이런 종류의 객체가 없는 경우에는,Collections.synchronizedSet 메소드를 사용해 세트를 「랩」할 필요가 있습니다. 이것은, 세트에의 우발적인 비동기 액세스를 막기 위해서(때문에), 작성시에 실시하는 것이 최적입니다.

Set s = Collections.synchronizedSet(new LinkedHashSet(...));

이 클래스의 iterator 메소드에 의해 반환되는 반복자는 「fail-fast」입니다. 반복자의 작성 후에, 반복자 자체의 remove 메소드 이외 방법으로 세트가 변경되면(자), 반복자는 ConcurrentModificationException 를 throw 합니다. 이와 같이, 병행해 변경을 하면(자), 반복자는, 장래의 예측할 수 없는 시점에 있어 예측할 수 없는 동작이 발생하는 위험을 회피하기 위해서, 즉시 한편 솜씨 자주(잘) 예외를 throw 합니다.

일반적으로, 비동기의 병행 변경이 있는 경우, 확실한 보증을 실시하는 것은 불가능해서, 반복자의 fail-fast의 동작을 보증할 수 없습니다. fail-fast 반복자는 최선 노력 원칙에 근거해,ConcurrentModificationException 를 throw 합니다. 따라서, 정확을 기하기 위해서 이 예외에 의존하는 프로그램을 쓰는 것은 잘못입니다. 「반복자의 fail-fast의 동작은 버그를 검출하기 위해서 사용해야 합니다」.

이 클래스는,Java Collections Framework 의 멤버입니다.

도입된 버젼:
1.4
관련 항목:
Object.hashCode() , Collection , Set , HashSet , TreeSet , Hashtable , 직렬화 된 형식

생성자 의 개요
LinkedHashSet ()
          디폴트의 초기 용량 (16)과 부하 계수 (0.75)로 새로운 빈 상태(empty)의 링크 해시 세트를 생성합니다.
LinkedHashSet (Collection <? extends E > c)
          지정된 컬렉션과 같은 요소에 의해 새로운 링크 해시 세트를 생성합니다.
LinkedHashSet (int initialCapacity)
          지정된 초기 용량과 디폴트의 부하 계수 (0.75)로 새로운 빈 상태(empty)의 링크 해시 세트를 생성합니다.
LinkedHashSet (int initialCapacity, float loadFactor)
          지정된 초기 용량과 부하 계수로 새로운 빈 상태(empty)의 링크 해시 세트를 생성합니다.
 
메소드의 개요
 
클래스 java.util. HashSet 로부터 상속된 메소드
add , clear , clone , contains , isEmpty , iterator , remove , size
 
클래스 java.util. AbstractSet 로부터 상속된 메소드
equals , hashCode , removeAll
 
클래스 java.util. AbstractCollection 로부터 상속된 메소드
addAll , containsAll , retainAll , toArray , toArray , toString
 
클래스 java.lang. Object 로부터 상속된 메소드
finalize , getClass , notify , notifyAll , wait , wait , wait
 
인터페이스 java.util. Set 로부터 상속된 메소드
add , addAll , clear , contains , containsAll , equals , hashCode , isEmpty , iterator , remove , removeAll , retainAll , size , toArray , toArray
 

생성자 의 상세

LinkedHashSet

public LinkedHashSet(int initialCapacity,
                     float loadFactor)
지정된 초기 용량과 부하 계수로 새로운 빈 상태(empty)의 링크 해시 세트를 생성합니다.

파라미터:
initialCapacity - 링크 해시 세트의 초기 용량
loadFactor - 링크 해시 세트의 부하 계수
예외:
IllegalArgumentException - 초기 용량이 제로보다 작은 경우, 또는 부하 계수가 정이 아닌 경우

LinkedHashSet

public LinkedHashSet(int initialCapacity)
지정된 초기 용량과 디폴트의 부하 계수 (0.75)로 새로운 빈 상태(empty)의 링크 해시 세트를 생성합니다.

파라미터:
initialCapacity - LinkedHashSet 의 초기 용량
예외:
IllegalArgumentException - 초기 용량이 제로보다 작은 경우

LinkedHashSet

public LinkedHashSet()
디폴트의 초기 용량 (16)과 부하 계수 (0.75)로 새로운 빈 상태(empty)의 링크 해시 세트를 생성합니다.


LinkedHashSet

public LinkedHashSet(Collection <?  extends E > c)
지정된 컬렉션과 같은 요소에 의해 새로운 링크 해시 세트를 생성합니다. 지정된 컬렉션과 디폴트의 부하 계수 (0.75)로 요소를 보관 유지하는데 충분한 초기 용량에 의해, 링크 해시 세트가 작성됩니다.

파라미터:
c - 요소가 세트에 배치되는 컬렉션
예외:
NullPointerException - 지정된 컬렉션이 null 인 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.