JavaTM 2
Platform
Std.  Ed.  v1. 4.0

java.util
클래스 TreeSet

java.lang.Object 
  |
  +--java.util.AbstractCollection 
        |
        +--java.util.AbstractSet 
              |
              +--java.util.TreeSet
모든 구현 인터페이스:
Cloneable , Collection , Serializable , Set , SortedSet

public class TreeSet
extends AbstractSet
implements SortedSet , Cloneable , Serializable

이 클래스는 TreeMap 의 인스턴스에 근거하는 Set 인터페이스를 구현합니다. 이 클래스에서는 소트 세트가 확실히 요소의 승순으로 소트 됩니다. 다만, 소트 방법은 사용되는 constructor 에 의해 달라, 요소의 「자연 순서 붙이고」(Comparable 를 참조)에 의해 소트 되는 경우와 세트 작성시에 제공되는 콤퍼레이터에 의해 소트 되는 경우가 있습니다.

이 구현은 기본 오퍼레이션 (add,remove, 및 contains)에 프로텍션 끝난 log(n) 시간 코스트를 제공합니다.

세트가 Set 인터페이스를 올바르게 구현하는 경우는 명시적인 콤퍼레이터의 제공의 유무에 관계없이, 세트로 관리되는 순서부는 「equals 와의 일관성」이 필요합니다 ( 「equals 와의 일관성」의 정확한 정의에 대해서는 Comparable 또는 Comparator 를 참조). 이것은 Set 인터페이스가 equals 오퍼레이션에 근거해 정의되기 (위해)때문에입니다만,TreeSet 의 인스턴스는 그 compareTo 메소드 또는 compare 메소드를 사용해 모든 키 비교를 실행하므로, 이 메소드에 의해 동일하다고 보여지는 2 개의 키는 세트로부터 봐도 등가입니다. 세트의 동작은 그 순서부가 equals 와 일관성이 없는 경우에서도 명확하게 정의되고 있습니다만,Set 인터페이스의 범용 규약에는 준거하고 있습니다.

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

     SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));

이 클래스의 iterator 메소드가 돌려주는 Iterator 는 「페이르파스트」입니다. 즉, 반복자의 작성 후에, 반복자 자체의 remove 메소드 이외 방법으로 세트가 변경되면(자), 반복자는 ConcurrentModificationException 를 슬로우 합니다. 따라서, 동시에 변경을 하면(자), 반복자는 장래의 예측할 수 없는 시점에 있어 예측할 수 없는 동작이 발생하는 위험을 회피하기 위해서, 즉시 한편 솜씨 자주(잘) 예외를 슬로우 합니다.

통상, 비동기의 동시 변경이 있는 경우, 확실한 프로텍션을 실시하는 것은 불가능해서, 반복자의 페이르파스트의 동작을 프로텍션할 수 없습니다. 페이르파스트 반복자는 최선 노력 원칙에 근거해,ConcurrentModificationException 를 슬로우 합니다. 따라서, 정확을 기하기 위해서 이 예외에 의존하는 프로그램을 쓰는 것은 잘못입니다. 「반복자의 페이르파스트의 동작은 버그를 검출하기 위해서 마셔 사용해야 합니다」

도입된 버젼:
1.2
관련 항목:
Collection , Set , HashSet , Comparable , Comparator , Collections.synchronizedSortedSet(SortedSet) , TreeMap , 직렬화 된 형식

생성자의 개요
TreeSet ()
          요소의 자연 순서부에 따라 소트 된, 새로운 하늘세트를 작성합니다.
TreeSet (Collection  c)
          지정된 콜렉션내의 요소를 가져, 요소의 「자연 순서 붙이고」에 따라 소트 된 새로운 세트를 작성합니다.
TreeSet (Comparator  c)
          지정된 콤퍼레이터에 따라 소트 된, 새로운 하늘세트를 작성합니다.
TreeSet (SortedSet  s)
          지정된 소트 세트와 같은 요소를 가져, 같은 순서부에 따라 소트 된, 새로운 세트를 작성합니다.
 
메소드의 개요
 boolean add (Object  o)
          지정된 요소가 세트의 요소로서 존재하지 않는 경우에, 그 요소를 세트에 추가합니다.
 boolean addAll (Collection  c)
          지정된 콜렉션내의 모든 요소를 세트에 추가합니다.
 void clear ()
          모든 요소를 세트로부터 삭제합니다.
 Object clone ()
          TreeSet 의 인스턴스의 샤로코피를 돌려줍니다.
 Comparator comparator ()
          소트 세트를 순서 붙이고 하는데 사용하는 콤퍼레이터를 돌려줍니다.
 boolean contains (Object  o)
          세트가, 지정된 요소를 보관 유지하고 있는 경우에 true 를 돌려줍니다.
 Object first ()
          소트 세트내에 현재 있는 최초 (하단)의 요소를 돌려줍니다.
 SortedSet headSet (Object  toElement)
          세트의 toElement 보다 작은 요소를 가지는 부분의 뷰를 돌려줍니다.
 boolean isEmpty ()
          세트가 요소를 1 개나 보관 유지하고 있지 않는 경우에 true 를 돌려줍니다.
 Iterator iterator ()
          세트내의 각 요소에 대한 반복자를 돌려줍니다.
 Object last ()
          소트 세트내에 현재 있는 최후 (상단)의 요소를 돌려줍니다.
 boolean remove (Object  o)
          지정된 요소가 있으면 세트로부터 삭제합니다.
 int size ()
          세트내의 요소수 (그 카디나리티)를 돌려줍니다.
 SortedSet subSet (Object  fromElement, Object  toElement)
          세트의 fromElement (이것을 포함한다) ~ toElement (이것을 포함하지 않는다)의 요소 범위를 가지는 부분의 뷰를 돌려줍니다.
 SortedSet tailSet (Object  fromElement)
          세트의 fromElement 에 동일한가 이것보다 큰 요소를 가지는 부분의 뷰를 돌려줍니다.
 
클래스 java.util. AbstractSet 에서 상속받은 메소드
equals , hashCode , removeAll
 
클래스 java.util. AbstractCollection 에서 상속받은 메소드
containsAll , retainAll , toArray , toArray , toString
 
클래스 java.lang. Object 에서 상속받은 메소드
finalize , getClass , notify , notifyAll , wait , wait , wait
 
인터페이스 java.util. Set 에서 상속받은 메소드
containsAll , equals , hashCode , removeAll , retainAll , toArray , toArray
 

생성자의 상세

TreeSet

public TreeSet()
요소의 자연 순서부에 따라 소트 된, 새로운 하늘세트를 작성합니다. 세트에 삽입된 모든 요소는 Comparable 인터페이스를 구현할 필요가 있습니다. 게다가 각 요소는 「서로 비교 가능」일 필요가 있습니다. 즉,e1.compareTo(e2) 는 세트내의 임의의 요소 e1e2 의 어느 쪽에 대해서도 ClassCastException 를 슬로우 해야 하지는 않습니다. 예를 들어, 요소가 정수세트에 캐릭터 라인 요소를 추가하려고 하는 등, 유저가 이 제약에 위반하는 요소를 세트에 추가하려고 하면(자),add(Object) 의 호출이 ClassCastException 를 슬로우 합니다.

관련 항목:
Comparable

TreeSet

public TreeSet(Comparator  c)
지정된 콤퍼레이터에 따라 소트 된, 새로운 하늘세트를 작성합니다. 세트에 삽입된 모든 요소는 지정된 콤퍼레이터에 의해 「서로 비교 가능」일 필요가 있습니다. 즉,comparator.compare(e1, e2) 는 세트내의 임의의 요소 e1e2 의 어느 쪽에 대해서도 ClassCastException 를 슬로우 해야 하지는 않습니다. 유저가 이 제약에 위반하는 요소를 세트에 추가하려고 하면(자),add(Object) 의 호출이 ClassCastException 를 슬로우 합니다.

파라미터:
c - 이 세트를 소트 하기 위해서 사용되는 콤퍼레이터. null 치는 요소의 「자연 순서 붙이고」를 사용하는 것을 나타낸다

TreeSet

public TreeSet(Collection  c)
지정된 콜렉션내의 요소를 가져, 요소의 「자연 순서 붙이고」에 따라 소트 된 새로운 세트를 작성합니다. 세트에 삽입된 모든 키는 Comparable 인터페이스를 구현할 필요가 있습니다. 게다가 각 키는 「서로 비교 가능」일 필요가 있습니다. 즉,k1.compareTo(k2) 는 세트내의 임의의 요소 k1k2 의 어느 쪽에 대해서도 ClassCastException 를 슬로우 해야 하지는 않습니다.

파라미터:
c - 새로운 세트를 구성하는 요소
예외:
ClassCastException - 지정된 콜렉션내의 키가 비교 가능하지 않은 경우, 혹은 서로 비교 가능하지 않은 경우
NullPointerException - 지정된 콜렉션이 null 인 경우

TreeSet

public TreeSet(SortedSet  s)
지정된 소트 세트와 같은 요소를 가져, 같은 순서부에 따라 소트 된, 새로운 세트를 작성합니다.

파라미터:
s - 새로운 세트를 구성하는 요소로부터 되는 소트 세트
예외:
NullPointerException - 지정된 소트 세트가 null 의 경우
메소드의 상세

iterator

public Iterator  iterator()
세트내의 각 요소에 대한 반복자를 돌려줍니다. 각 요소는 승순으로 돌려주어집니다.

정의:
인터페이스 Set 내의 iterator
정의:
클래스 AbstractCollection 내의 iterator
반환값:
세트의 요소의 반복자

size

public int size()
세트내의 요소수 (그 카디나리티)를 돌려줍니다.

정의:
인터페이스 Set 내의 size
정의:
클래스 AbstractCollection 내의 size
반환값:
세트내의 요소수 (그 카디나리티)

isEmpty

public boolean isEmpty()
세트가 요소를 1 개나 보관 유지하고 있지 않는 경우에 true 를 돌려줍니다.

정의:
인터페이스 Set 내의 isEmpty
오버라이드(override):
클래스 AbstractCollection 내의 isEmpty
반환값:
세트가 요소를 1 개나 보관 유지하고 있지 않는 경우는 true

contains

public boolean contains(Object  o)
세트가, 지정된 요소를 보관 유지하고 있는 경우에 true 를 돌려줍니다.

정의:
인터페이스 Set 내의 contains
오버라이드(override):
클래스 AbstractCollection 내의 contains
파라미터:
o - 이 세트에 있을지 어떨지를 판정하는 오브젝트
반환값:
세트가, 지정된 요소를 보관 유지하고 있는 경우는 true
예외:
ClassCastException - 지정된 오브젝트가 세트내에 현재 있는 요소와 비교 가능하지 않은 경우

add

public boolean add(Object  o)
지정된 요소가 세트의 요소로서 존재하지 않는 경우에, 그 요소를 세트에 추가합니다.

정의:
인터페이스 Set 내의 add
오버라이드(override):
클래스 AbstractCollection 내의 add
파라미터:
o - 세트에 추가되는 요소
반환값:
세트가 지정된 요소를 보관 유지하고 있지 않았던 경우는 true
예외:
ClassCastException - 지정된 오브젝트가 세트내에 현재 있는 요소와 비교 가능하지 않은 경우

remove

public boolean remove(Object  o)
지정된 요소가 있으면 세트로부터 삭제합니다.

정의:
인터페이스 Set 내의 remove
오버라이드(override):
클래스 AbstractCollection 내의 remove
파라미터:
o - 세트에 있으면 삭제되는 오브젝트
반환값:
지정된 요소가 세트내에 있었을 경우는 true
예외:
ClassCastException - 지정된 오브젝트가 세트내에 현재 있는 요소와 비교 가능하지 않은 경우

clear

public void clear()
모든 요소를 세트로부터 삭제합니다.

정의:
인터페이스 Set 내의 clear
오버라이드(override):
클래스 AbstractCollection 내의 clear

addAll

public boolean addAll(Collection  c)
지정된 콜렉션내의 모든 요소를 세트에 추가합니다.

정의:
인터페이스 Set 내의 addAll
오버라이드(override):
클래스 AbstractCollection 내의 addAll
파라미터:
c - 추가되는 요소
반환값:
이 호출의 결과, 이 세트가 변경되었을 경우는 true
예외:
ClassCastException - 지정된 요소가 세트내에 현재 있는 요소와 비교 가능하지 않은 경우
NullPointerException - 지정된 콜렉션이 null 의 경우
관련 항목:
Set.add(Object)

subSet

public SortedSet  subSet(Object  fromElement,
                        Object  toElement)
세트의 fromElement (이것을 포함한다) ~ toElement (이것을 포함하지 않는다)의 요소 범위를 가지는 부분의 뷰를 돌려줍니다. fromElementtoElement 가 동일한 경우는 하늘의 소트 세트가 돌려주어집니다. 돌려주어지는 소트 세트는 세트에 근거하고 있어 돌려주어지는 소트 세트에서의 변경은 세트에 반영되어 그 역의 경우도 같습니다. 돌려주어지는 소트 세트는 Set 의 옵션의 오퍼레이션을 모두 서포트합니다.

이 메소드가 돌려주는 소트 세트는 유저가 요소를 지정의 범위외에 삽입하려고 하면(자) IllegalArgumentException 를 슬로우 합니다.

주: 이 메소드는 항상, 그 하단점은 포함하지만 상단점은 포함하지 않는 「한쪽 편이 열린 범위」를 돌려줍니다. 상하단점을 포함한 「닫은 범위」가 필요해, 요소의 형태에 의해 지정된 값으로 직후의 요소의 계산이 가능하게 되는 경우, 단지 lowEndpoint ~ successor(highEndpoint) 의 부분 범위를 지정해 주세요. 예를 들어,s 가 캐릭터 라인의 소트 세트인 경우, 다음의 관용법은 s 내의 low ~ high 의 모든 캐릭터 라인 (상하단점을 포함한다)을 보관 유지하는 뷰를 취득합니다.

     SortedSet sub = s.subSet(low, high+"\0");
같은 테크닉을 사용해, 상하단점의 어느쪽이나 포함하지 않는 「연 범위」를 생성할 수 있습니다. 다음의 관용법은 s 내의 low ~ high 의 모든 캐릭터 라인 (상하단점을 포함하지 않는다)을 보관 유지하는 뷰를 취득합니다.
     SortedSet sub = s.subSet(low+"\0", high);

정의:
인터페이스 SortedSet 내의 subSet
파라미터:
fromElement - subSet 의 하단점 (이것을 포함한다)
toElement - subSet 의 상단점 (이것을 포함하지 않는다)
반환값:
세트의 fromElement (이것을 포함한다)로부터 toElement (이것을 포함하지 않는다)의 요소 범위를 가지는 부분의 뷰
예외:
ClassCastException - 세트의 콤퍼레이터를 사용해,fromElementtoElement 를 서로 비교할 수 없는 경우 (또는 세트에 자연 순서부를 사용하는 콤퍼레이터가 없는 경우)
IllegalArgumentException - fromElementtoElement 보다 큰 경우
NullPointerException - fromElement 또는 toElementnull 의 경우에, 세트가 자연 순서부를 사용할 때, 혹은 그 콤퍼레이터가 null 요소를 허용 하지 않을 때

headSet

public SortedSet  headSet(Object  toElement)
세트의 toElement 보다 작은 요소를 가지는 부분의 뷰를 돌려줍니다. 돌려주어지는 소트 세트는 세트에 근거하고 있어 돌려주어지는 소트 세트에서의 변경은 세트에 반영되어 그 역의 경우도 같습니다. 돌려주어지는 소트 세트는 세트의 옵션의 오퍼레이션을 모두 서포트합니다.

이 메소드가 돌려주는 소트 세트는 유저가 toElement 보다 큰가 동일한 요소를 삽입하려고 하면(자) IllegalArgumentException 를 슬로우 합니다.

주: 이 메소드는 항상, 그 (상)단점을 포함하지 않는 뷰를 돌려줍니다. 이 단 점을 포함한 뷰를 필요로 해, 요소의 형태에 의해 지정된 값으로 직후의 요소의 계산이 가능하게 되는 경우, 단지 successor(highEndpoint) 에 의해 한계를 설치된 headSet 를 지정해 주세요. 예를 들어,s 가 캐릭터 라인의 소트 세트인 경우, 다음의 관용법은 s 내의 high 보다 작은가 동일한 모든 캐릭터 라인을 보관 유지하는 뷰를 취득합니다.

 SortedSet head = s.headSet(high+"\0");

정의:
인터페이스 SortedSet 내의 headSet
파라미터:
toElement - headSet 의 상단점 (이것을 포함하지 않는다)
반환값:
세트의 toElement 보다 작은 요소를 가지는 부분의 뷰
예외:
ClassCastException - toElement 가 세트의 콤퍼레이터와 호환성이 없는 경우 (또는 세트에 콤퍼레이터가 없는 경우,toElementComparable 가 구현되어 있지 않은 경우)
IllegalArgumentException - 이 세트 자체가 subSet, headSet, 또는 tailSet 로,toElement 가 지정한 범위의 subSet, headSet, 또는 tailSet 에 없는 경우
NullPointerException - toElementnull 의 경우에, 세트가 자연 순서부를 사용할 때, 혹은 그 콤퍼레이터가 null 요소를 허용 하지 않을 때

tailSet

public SortedSet  tailSet(Object  fromElement)
세트의 fromElement 에 동일한가 이것보다 큰 요소를 가지는 부분의 뷰를 돌려줍니다. 돌려주어지는 소트 세트는 세트에 근거하고 있어 돌려주어지는 소트 세트에서의 변경은 세트에 반영되어 그 역의 경우도 같습니다. 돌려주어지는 소트 세트는 세트의 옵션의 오퍼레이션을 모두 서포트합니다.

이 메소드가 돌려주는 소트 세트는 유저가 fromElement 보다 작은 요소를 삽입하려고 하면(자) IllegalArgumentException 를 슬로우 합니다. 주: 이 메소드는 항상 그 (하)단점을 포함한 뷰를 돌려줍니다. 이 단 점을 포함하지 않는 뷰를 필요로 해, 요소의 형태에 의해 지정된 값의 직후의 요소의 계산이 가능한 경우, 값은 단지 successor(lowEndpoint) 에 의해 한계를 설치된 tailSet 를 지정해 주세요. 예를 들어,s 가 캐릭터 라인의 소트 세트인 경우, 다음의 관용법은 키가 low 보다 큰 s 내의 모든 캐릭터 라인을 보관 유지하는 뷰를 취득합니다.

     SortedSet tail = s.tailSet(low+"\0");

정의:
인터페이스 SortedSet 내의 tailSet
파라미터:
fromElement - tailSet 의 하단점 (이것을 포함한다)
반환값:
세트의 fromElement 에 동일한가 이것보다 큰 요소를 가지는 부분의 뷰
예외:
ClassCastException - fromElement 가 세트의 콤퍼레이터와 호환성이 없는 경우 (또는 세트에 콤퍼레이터가 없는 경우,fromElementComparable 가 구현되어 있지 않은 경우)
IllegalArgumentException - 이 세트 자체가 subSet, headSet, 또는 tailSet 로,fromElement 가 지정한 범위의 subSet, headSet, 또는 tailSet 에 없는 경우
NullPointerException - fromElementnull 의 경우에, 세트가 자연 순서부를 사용할 때, 혹은 그 콤퍼레이터가 null 요소를 허용 하지 않을 때

comparator

public Comparator  comparator()
소트 세트를 순서 붙이고 하는데 사용하는 콤퍼레이터를 돌려줍니다. 다만, 트리 세트가 그 요소의 자연 순서부를 사용하는 경우는 null 를 돌려줍니다.

정의:
인터페이스 SortedSet 내의 comparator
반환값:
소트 세트를 순서 붙이고 하는데 사용하는 콤퍼레이터. 다만, 트리 세트가 그 요소의 자연 순서부를 사용하는 경우는 null

first

public Object  first()
소트 세트내에 현재 있는 최초 (하단)의 요소를 돌려줍니다.

정의:
인터페이스 SortedSet 내의 first
반환값:
소트 세트내에 현재 있는 최초 (하단)의 요소
예외:
NoSuchElementException - 소트 세트가 비었을 경우

last

public Object  last()
소트 세트내에 현재 있는 최후 (상단)의 요소를 돌려줍니다.

정의:
인터페이스 SortedSet 내의 last
반환값:
소트 세트내에 현재 있는 최후 (상단)의 요소
예외:
NoSuchElementException - 소트 세트가 비었을 경우

clone

public Object  clone()
TreeSet 의 인스턴스의 샤로코피를 돌려줍니다. 그 요소는 복제되지 않습니다.

오버라이드(override):
클래스 Object 내의 clone
반환값:
이 세트의 샤로코피
관련 항목:
Cloneable

JavaTM 2
Platform
Std.  Ed.  v1. 4.0

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

Java, Java 2 D, 및 JDBC 는 미국 및 그 외의 나라에 있어서의 미국 Sun Microsystems, Inc. 의 상표 혹은 등록상표입니다.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.