|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
java.lang.Objectjava.util.Collections
public class Collections
이 클래스는, 컬렉션에 작용한다, 또는 컬렉션을 돌려주는 static 메소드만으로 구성됩니다. 이 클래스에는, 지정된 컬렉션에 연동한 새로운 컬렉션을 돌려주는 「래퍼」 등, 컬렉션에 대해서 작용하는 다양한 알고리즘이 있습니다.
이 클래스의 메소드에 제공되는 컬렉션 또는 클래스 객체가 null 의 경우, 이 클래스의 메소드는 NullPointerException 를 모두 throw 합니다.
이 클래스에 있는 다양한 알고리즘의 문서에는, 일반적으로, 「구현」의 간단한 설명이 포함되어 있습니다. 이 설명은, 「스펙」의 일부에서는 없고 「구현 정보」라고 생각해 주세요. 구현자는, 스펙에 반하지 않는 한, 다른 알고리즘을 자유롭게 사용할 수 있습니다. 예를 들어,sort 가 사용하는 알고리즘은 머지 소트일 필요는 없습니다만, 「고정 (stable)」의 알고리즘이 아니면 안됩니다.
컬렉션이 set 메소드와 같이 적절한 변이 원시형 메소드를 지원하고 있지 않는 경우, 이 클래스 (처리되는 컬렉션을 수정하는 알고리즘)에 포함되어 있던 「파괴적」알고리즘은,UnsupportedOperationException 를 throw 하도록(듯이) 지정되고 있습니다. 호출이 컬렉션에 영향을 주지 않는 경우, 이러한 알고리즘은 예외를 throw 하는 경우가 있습니다만, 필수가 아닙니다. 예를 들어, 소트 끝난 변경 불가능한 리스트로,sort 메소드를 호출하면(자),UnsupportedOperationException 가 throw 되는 경우와 throw 되지 않는 경우가 있습니다.
이 클래스는,Java Collections Framework 의 멤버입니다.
Collection
,
Set
,
List
,
Map
필드의 개요 | |
---|---|
static List |
EMPTY_LIST
빈 상태(empty)의 리스트입니다 (불변). |
static Map |
EMPTY_MAP
빈 상태(empty)의 맵입니다 (불변). |
static Set |
EMPTY_SET
빈 상태(empty)세트입니다 (불변). |
메소드의 개요 | ||
---|---|---|
static
|
addAll (Collection <? super T> c,
T... elements)
지정된 모든 요소가 지정된 컬렉션에 추가합니다. |
|
static
|
asLifoQueue (Deque <T> deque)
Deque 의 뷰를 후입선출 (Lifo) Queue 로서 돌려줍니다. |
|
static
|
binarySearch (List <? extends Comparable <? super T>> list,
T key)
바이너리 서치 알고리즘을 사용해, 지정된 리스트로부터 지정된 객체를 검색합니다. |
|
static
|
binarySearch (List <? extends T> list,
T key,
Comparator <? super T> c)
바이너리 서치 알고리즘을 사용해, 지정된 리스트로부터 지정된 객체를 검색합니다. |
|
static
|
checkedCollection (Collection <E> c,
Class <E> type)
지정된 컬렉션의, 동적으로 형태 보증된 뷰를 돌려줍니다. |
|
static
|
checkedList (List <E> list,
Class <E> type)
지정된 리스트의 동적으로 형태 보증된 뷰를 돌려줍니다. |
|
static
|
checkedMap (Map <K, V> m,
Class <K> keyType,
Class <V> valueType)
지정된 맵의 동적으로 형태 보증된 뷰를 돌려줍니다. |
|
static
|
checkedSet (Set <E> s,
Class <E> type)
지정된 세트의 동적으로 형태 보증된 뷰를 돌려줍니다. |
|
static
|
checkedSortedMap (SortedMap <K, V> m,
Class <K> keyType,
Class <V> valueType)
지정된 소트 맵의 동적으로 형태 보증된 뷰를 돌려줍니다. |
|
static
|
checkedSortedSet (SortedSet <E> s,
Class <E> type)
지정된 소트 세트의 동적으로 형태 보증된 뷰를 돌려줍니다. |
|
static
|
copy (List <? super T> dest,
List <? extends T> src)
있는 리스트로부터 다른 리스트에 모든 요소를 카피합니다. |
|
static boolean |
disjoint (Collection <? > c1,
Collection <? > c2)
지정된 2 개의 컬렉션에 공통의 요소가 존재하지 않는 경우,true 를 돌려줍니다. |
|
static
|
emptyList ()
빈 상태(empty)의 리스트를 돌려줍니다 (불변). |
|
static
|
emptyMap ()
빈 상태(empty)의 맵을 돌려줍니다 (불변). |
|
static
|
emptySet ()
빈 상태(empty)세트 (불변)를 돌려줍니다. |
|
static
|
enumeration (Collection <T> c)
지정된 컬렉션의 열거를 돌려줍니다. |
|
static
|
fill (List <? super T> list,
T obj)
지정된 리스트의 모든 요소가 지정된 요소로 옮겨놓습니다. |
|
static int |
frequency (Collection <? > c,
Object o)
지정된 컬렉션내에서, 지정된 객체와 등가인 요소의 수를 돌려줍니다. |
|
static int |
indexOfSubList (List <? > source,
List <? > target)
지정된 소스 리스트내에서, 지정된 타겟 리스트가 최초로 출현한 위치의 개시 위치를 돌려줍니다. |
|
static int |
lastIndexOfSubList (List <? > source,
List <? > target)
지정된 소스 리스트내에서, 마지막에 출현한 지정 타겟 리스트의 개시 위치를 돌려줍니다. |
|
static
|
list (Enumeration <T> e)
지정된 열거에 의해 반환된 요소를 포함한 배열 리스트를, 반환된 차례로 돌려줍니다. |
|
static
|
max (Collection <? extends T> coll)
요소의 「자연 순서 붙이고」에 따라, 지정된 컬렉션의 최대의 요소를 돌려줍니다. |
|
static
|
max (Collection <? extends T> coll,
Comparator <? super T> comp)
지정된 Comparator가 가리키는 순서에 따라, 지정된 컬렉션의 최대의 요소를 돌려줍니다. |
|
static
|
min (Collection <? extends T> coll)
요소의 「자연 순서 붙이고」에 따라, 지정된 컬렉션의 최소의 요소를 돌려줍니다. |
|
static
|
min (Collection <? extends T> coll,
Comparator <? super T> comp)
지정된 Comparator가 가리키는 순서에 따라, 지정된 컬렉션의 최소의 요소를 돌려줍니다. |
|
static
|
nCopies (int n,
T o)
지정된 객체의 n 개의 카피로 구성되는 불변의 리스트를 돌려줍니다. |
|
static
|
newSetFromMap (Map <E,Boolean > map)
지정된 맵에 연동하는 세트를 돌려줍니다. |
|
static
|
replaceAll (List <T> list,
T oldVal,
T newVal)
리스트내에 출현하는 지정된 값을 모두 다른 값에 옮겨놓습니다. |
|
static void |
reverse (List <? > list)
지정된 리스트의 요소의 순서를 반대로 합니다. |
|
static
|
reverseOrder ()
Comparable 인터페이스를 구현하는 객체의 컬렉션으로 「자연 순서 붙이고」의 역을 의무화 하는 Comparator를 돌려줍니다. |
|
static
|
reverseOrder (Comparator <T> cmp)
지정된 Comparator의 역순서를 의무화 하는 Comparator를 돌려줍니다. |
|
static void |
rotate (List <? > list,
int distance)
지정된 리스트의 요소를, 지정된 거리에 의해 회전합니다. |
|
static void |
shuffle (List <? > list)
디폴트의 random number generation의 원을 사용해, 지정된 리스트의 순서를 무작위로 바꿔 넣습니다. |
|
static void |
shuffle (List <? > list,
Random rnd)
디폴트의 random number generation의 원을 사용해, 지정된 리스트의 순서를 무작위로 바꿔 넣습니다. |
|
static
|
singleton (T o)
지정된 객체만을 포함하고 있는 불변세트를 돌려줍니다. |
|
static
|
singletonList (T o)
지정된 객체만을 포함하고 있는 불변의 리스트를 돌려줍니다. |
|
static
|
singletonMap (K key,
V value)
지정된 값으로 지정된 키만을 매핑 하는 불변의 맵을 돌려줍니다. |
|
static
|
sort (List <T> list)
요소의 「자연 순서 붙이고」에 따라, 지정된 리스트를 승순에 소트 합니다. |
|
static
|
sort (List <T> list,
Comparator <? super T> c)
지정된 Comparator가 가리키는 순서에 따라, 지정된 리스트를 소트 합니다. |
|
static void |
swap (List <? > list,
int i,
int j)
지정된 리스트의 지정된 위치에 있는 요소를 스왑 합니다. |
|
static
|
synchronizedCollection (Collection <T> c)
지정된 컬렉션에 연동하는 동기 (thread 세이프인) 컬렉션을 돌려줍니다. |
|
static
|
synchronizedList (List <T> list)
지정된 리스트에 연동하는 동기 (thread 세이프인) 리스트를 돌려줍니다. |
|
static
|
synchronizedMap (Map <K, V> m)
지정된 맵에 연동하는 동기 (thread 세이프인) 맵을 돌려줍니다. |
|
static
|
synchronizedSet (Set <T> s)
지정된 세트에 연동하는 동기 (thread 세이프인) 세트를 돌려줍니다. |
|
static
|
synchronizedSortedMap (SortedMap <K, V> m)
지정된 소트 맵에 연동하는 동기 (thread 세이프인) 소트 맵을 돌려줍니다. |
|
static
|
synchronizedSortedSet (SortedSet <T> s)
지정된 소트 세트에 연동하는 동기 (thread 세이프인) 소트 세트를 돌려줍니다. |
|
static
|
unmodifiableCollection (Collection <? extends T> c)
지정된 컬렉션의 변경 불가능한 뷰를 돌려줍니다. |
|
static
|
unmodifiableList (List <? extends T> list)
지정된 리스트의 변경 불가능한 뷰를 돌려줍니다. |
|
static
|
unmodifiableMap (Map <? extends K,? extends V> m)
지정된 맵의 변경 불가능한 뷰를 돌려줍니다. |
|
static
|
unmodifiableSet (Set <? extends T> s)
지정된 세트의 변경 불가능한 뷰를 돌려줍니다. |
|
static
|
unmodifiableSortedMap (SortedMap <K,? extends V> m)
지정된 소트 맵의 변경 불가능한 뷰를 돌려줍니다. |
|
static
|
unmodifiableSortedSet (SortedSet <T> s)
지정된 소트 세트의 변경 불가능한 뷰를 돌려줍니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
필드의 상세 |
---|
public static final Set EMPTY_SET
emptySet()
public static final List EMPTY_LIST
emptyList()
public static final Map EMPTY_MAP
emptyMap()
메소드의 상세 |
---|
public static <T extends Comparable <? super T>> void sort(List <T> list)
이 소트는 고정인 것이 보증되고 있습니다. 즉, 소트를 실행해도, 동등의 요소의 순서는 바뀌지 않습니다.
지정된 리스트는 변경 가능하지 않으면 안됩니다, 사이즈 변경은 할 수 없어도 괜찮습니다.
소트 알고리즘은 수정 머지 소트입니다. 이 소트에서는, 하위의 사브리 파업에서의 최고 레벨의 요소가 상위의 사브리 파업에서의 최저 레벨의 요소보다 작은 경우, 머지는 생략 됩니다. 이 알고리즘은, 항상 n log(n)의 퍼포먼스를 제공합니다. 이 구현은, 지정된 리스트의 배열에의 덤프, 배열의 소트, 리스트의 반복 처리를 실시하는 것으로, 배열의 대응하는 위치로부터 각 요소를 재설정합니다. 이것은, 링크된 리스트를 적소에 소트 하려고 했을 경우의 n2 log(n)의 퍼포먼스가 되는 것을 회피합니다.
list
- 소트 되는 리스트
ClassCastException
- 리스트에 「서로 비교 가능」이 아닌 요소 (예를 들어, 캐릭터 라인과 정수)가 있는 경우
UnsupportedOperationException
- 지정된 리스트의 리스트 반복자가 set 오퍼레이션을 지원하지 않는 경우Comparable
public static <T> void sort(List <T> list, Comparator <? super T> c)
이 소트는 고정인 것이 보증되고 있습니다. 즉, 소트를 실행해도, 동등의 요소의 순서는 바뀌지 않습니다.
소트 알고리즘은 수정 머지 소트입니다. 이 소트에서는, 하위의 사브리 파업에서의 최고 레벨의 요소가 상위의 사브리 파업에서의 최저 레벨의 요소보다 작은 경우, 머지는 생략 됩니다. 이 알고리즘은, 항상 n log(n)의 퍼포먼스를 제공합니다. 지정된 리스트는 변경 가능하지 않으면 안됩니다, 사이즈 변경은 할 수 없어도 괜찮습니다. 이 구현은, 지정된 리스트의 배열에의 덤프, 배열의 소트, 리스트의 반복 처리를 실시하는 것으로, 배열의 대응하는 위치로부터 각 요소를 재설정합니다. 이것은, 링크된 리스트를 적소에 소트 하려고 했을 경우의 n2 log(n)의 퍼포먼스가 되는 것을 회피합니다.
list
- 소트 되는 리스트c
- 리스트의 순서를 결정하는 Comparator. null 치는, 요소의 「자연 순서 붙이고」를 사용하는 것을 나타낸다
ClassCastException
- 리스트로 지정된 Comparator로 「서로 비교」할 수 없는 요소가 있는 경우
UnsupportedOperationException
- 지정된 리스트의 리스트 반복자가 set 오퍼레이션을 지원하지 않는 경우Comparator
public static <T> int binarySearch(List <? extends Comparable <? super T>> list, T key)
sort(List)
메소드를 사용해 요소자연 순서부에 따라 승순에 소트 할 필요가 있습니다. 리스트가 소트되어 있지 않은 경우, 결과는 정의되지 않습니다. 지정된 객체와 동일한 요소가 리스트에 다수 있는 경우, 어떤 것이 발견될까는 보증되지 않습니다.
「랜덤 억세스」리스트의 경우, 이 메소드는 log(n) 시간에 동작합니다 (위치를 지정한 액세스에 거의 일정한 시간이 필요). 지정된 리스트가 RandomAccess
인터페이스를 구현하지 않고, 큰 리스트인 경우, 이 메소드는 O(n) 링크 traversal와 O(log n) 요소 비교를 실행하는 반복자 베이스의 바이너리 서치를 실시합니다.
list
- 검색되는 리스트key
- 검색되는 키
ClassCastException
- 리스트에 「서로 비교 가능」이 아닌 요소 (예를 들어, 캐릭터 라인과 정수)가 있는 경우, 또는 검색 키가 리스트의 요소로 서로 비교 가능하지 않은 경우public static <T> int binarySearch(List <? extends T> list, T key, Comparator <? super T> c)
sort(List, Comparator)
메소드를 사용해, 지정된 Comparator에 따라 승순에 소트 하지 않으면 안됩니다. 리스트가 소트되어 있지 않은 경우, 결과는 정의되지 않습니다. 지정된 객체와 동일한 요소가 리스트에 다수 있는 경우, 어떤 것이 발견될까는 보증되지 않습니다.
「랜덤 억세스」리스트의 경우, 이 메소드는 log(n) 시간에 동작합니다 (위치를 지정한 액세스에 거의 일정한 시간이 필요). 지정된 리스트가 RandomAccess
인터페이스를 구현하지 않고, 큰 리스트인 경우, 이 메소드는 O(n) 링크 traversal와 O(log n) 요소 비교를 실행하는 반복자 베이스의 바이너리 서치를 실시합니다.
list
- 검색되는 리스트key
- 검색되는 키c
- 리스트가 순서 붙이고 되는 Comparator.
null 치는, 요소자연 순서부를 사용하는 것을 나타낸다
ClassCastException
- 리스트로 지정된 Comparator로 「서로 비교 가능」이 아닌 요소가 있는 경우, 또는 검색 키가 이 Comparator를 사용해 리스트의 요소로 서로 비교할 수 없는 경우public static void reverse(List <? > list)
이 메소드는 1 차 시간에 동작합니다.
list
- 요소의 순서가 반대로 되는 리스트
UnsupportedOperationException
- 지정된 리스트 또는 그 리스트 반복자가 set 오퍼레이션을 지원하지 않는 경우public static void shuffle(List <? > list)
상기의 설명으로 「거의」라고 하는 말을 사용하고 있는 것은, random number generation의 원이 되는 디폴트의 소스가, 독립해 선택된 비트의 소스로서 편향이 없는 것은 근사적으로 마셔 성립하기 때문입니다. 랜덤에 선택된 완전한 소스이면, 알고리즘이 편성을 선택하는 확률은, 완전하게 한결같게 됩니다.
이 구현은, 리스트의 마지막 요소로부터 2 번째의 요소까지 역방향으로 횡단(traverse) 해, 무작위로 선택된 요소를 「현재의 위치」에 반복해 바꿔 넣습니다. 요소는, 리스트의 최초의 요소로부터 현재의 위치까지의 범위에서 무작위로 선택됩니다.
이 메소드는 1 차 시간에 동작합니다. 지정된 리스트가 RandomAccess
인터페이스를 구현하지 않는, 큰 리스트인 경우, 리스트의 순서를 바꿔 넣기 전에, 이 구현은 지정된 리스트를 배열에 덤프 해, 다음으로 바꾸어 넣은 배열을 리스트에 덤프 해 되돌립니다. 적절히 「차례차례 액세스」리스트의 순서를 바꿔 넣는 것에 의해 일어나는 2 차 동작을 피하기 (위해)때문에입니다.
list
- 순서를 바꿔 넣을 수 있는 리스트
UnsupportedOperationException
- 지정된 리스트 또는 그 리스트 반복자가 set 오퍼레이션을 지원하지 않는 경우public static void shuffle(List <? > list, Random rnd)
이 구현은, 리스트의 마지막 요소로부터 2 번째의 요소까지 역방향으로 횡단(traverse) 해, 무작위로 선택된 요소를 「현재의 위치」에 반복해 바꿔 넣습니다. 요소는, 리스트의 최초의 요소로부터 현재의 위치까지의 범위에서 무작위로 선택됩니다.
이 메소드는 1 차 시간에 동작합니다. 지정된 리스트가 RandomAccess
인터페이스를 구현하지 않는, 큰 리스트인 경우, 리스트의 순서를 바꿔 넣기 전에, 이 구현은 지정된 리스트를 배열에 덤프 해, 다음으로 바꾸어 넣은 배열을 리스트에 덤프 해 되돌립니다. 적절히 「차례차례 액세스」리스트의 순서를 바꿔 넣는 것에 의해 일어나는 2 차 동작을 피하기 (위해)때문에입니다.
list
- 순서를 바꿔 넣을 수 있는 리스트rnd
- 리스트의 순서를 바꿔 넣기 위해서(때문에) 사용하는 random number generation의 원
UnsupportedOperationException
- 지정된 리스트 또는 그 리스트 반복자가 set 오퍼레이션을 지원하지 않는 경우public static void swap(List <? > list, int i, int j)
list
- 요소를 스왑 하는 리스트i
- 스왑 되는 1 개의 요소의 인덱스j
- 스왑 되는 이제(벌써) 1 개의 요소의 인덱스
IndexOutOfBoundsException
- i 또는 j 중 한쪽이 범위외의 경우 (i < 0 || i >= list.size() || j < 0 || j >= list.size())public static <T> void fill(List <? super T> list, T obj)
이 메소드는 1 차 시간에 동작합니다.
list
- 지정된 요소가 삽입되는 리스트obj
- 지정된 리스트에 삽입되는 요소
UnsupportedOperationException
- 지정된 리스트 또는 그 리스트 반복자가 set 오퍼레이션을 지원하지 않는 경우public static <T> void copy(List <? super T> dest, List <? extends T> src)
이 메소드는 1 차 시간에 동작합니다.
dest
- 카피처의 리스트src
- 카피원의 리스트
IndexOutOfBoundsException
- 카피처의 리스트가 카피원의 리스트 전체를 포함하기에는 너무 작은 경우
UnsupportedOperationException
- 카피 리스트의 리스트 반복자가 set 오퍼레이션을 지원하지 않는 경우public static <T extends Object & Comparable <? super T>> T min(Collection <? extends T> coll)
이 메소드는 컬렉션 전체로 반복 처리를 실시하므로, 컬렉션의 사이즈 에 비례한 시간이 필요합니다.
coll
- 최소의 요소를 결정하는 컬렉션
ClassCastException
- 컬렉션에 「서로 비교 가능」이 아닌 요소 (예를 들어, 캐릭터 라인과 정수)가 있는 경우
NoSuchElementException
- 컬렉션이 빈 상태(empty)의 경우Comparable
public static <T> T min(Collection <? extends T> coll, Comparator <? super T> comp)
이 메소드는 컬렉션 전체로 반복 처리를 실시하므로, 컬렉션의 사이즈 에 비례한 시간이 필요합니다.
coll
- 최소의 요소를 결정하는 컬렉션comp
- 최소의 요소 리스트가 결정되는 Comparator.
null 치는, 요소의 「자연 순서 붙이고」를 사용하는 것을 나타낸다
ClassCastException
- 컬렉션으로 지정된 Comparator로 「서로 비교」할 수 없는 요소가 있는 경우
NoSuchElementException
- 컬렉션이 빈 상태(empty)의 경우Comparable
public static <T extends Object & Comparable <? super T>> T max(Collection <? extends T> coll)
이 메소드는 컬렉션 전체로 반복 처리를 실시하므로, 컬렉션의 사이즈 에 비례한 시간이 필요합니다.
coll
- 최대의 요소를 결정하는 컬렉션
ClassCastException
- 컬렉션에 「서로 비교 가능」이 아닌 요소 (예를 들어, 캐릭터 라인과 정수)가 있는 경우
NoSuchElementException
- 컬렉션이 빈 상태(empty)의 경우Comparable
public static <T> T max(Collection <? extends T> coll, Comparator <? super T> comp)
이 메소드는 컬렉션 전체로 반복 처리를 실시하므로, 컬렉션의 사이즈 에 비례한 시간이 필요합니다.
coll
- 최대의 요소를 결정하는 컬렉션comp
- 최대의 요소 리스트를 결정하는 Comparator.
null 치는, 요소의 「자연 순서 붙이고」를 사용하는 것을 나타낸다
ClassCastException
- 컬렉션으로 지정된 Comparator로 「서로 비교」할 수 없는 요소가 있는 경우
NoSuchElementException
- 컬렉션이 빈 상태(empty)의 경우Comparable
public static void rotate(List <? > list, int distance)
예를 들어,list 에는 [t, a, n, k, s] 가 포함된다고 합니다. Collections.rotate(list, 1) (혹은 Collections.rotate(list, -4))를 호출한 뒤,list 에는 [s, t, a, n, k] 가 포함됩니다.
이 메소드를 사브리 파업에 유효하게 적용해, 나머지의 요소의 순서를 보존하면서, 리스트내의 1 개 또는 복수의 요소를 이동할 수가 있습니다. 예를 들어, 다음의 관용법은, 인덱스 j 에 있는 요소를 위치 k 로 이동합니다 (k 는 j 는 보다 큰지, 등치일 필요가 있습니다).
Collections.rotate(list.subList(j, k+1), -1);이것을 고정하기 위해서,list 에 [a, b, c, d, e] 가 포함되면(자) 가정합니다. 인덱스 1 (b)에 있는 요소를 2 개의 위치하러 진행하기 위해서(때문에)는, 다음의 호출을 실행합니다.
Collections.rotate(l.subList(1, 4), -1);그 결과적으로 얻을 수 있는 리스트는 [a, c, d, b, e] 가 됩니다.
복수의 요소를 진행시키기 위해서(때문에)는, 회전 거리의 절대치를 증가시킵니다. 뒤로 이동시키려면 , 정의 쉬프트 이동량을 사용합니다.
지정된 값이 작은 리스트인지,RandomAccess
인터페이스를 구현하고 있는 경우, 이 구현은 제 1 의 요소를 이동해야 할 위치로 교환합니다. 다음에, 옮겨놓을 수 있었던 요소가 최초의 요소에 스왑 될 때까지, 옮겨놓을 수 있었던 요소를 이동해야 할 위치에 반복해 교환합니다. 필요에 따라서, 회전이 완료할 때까지, 제 2 요소 및 연속하는 요소에 대해 이 프로세스가 반복해집니다. 지정된 리스트가 크고,RandomAccess 인터페이스를 구현하고 있지 않는 경우, 이 구현은, 인덱스 -distance mod size 의 2 개의 사브리스트뷰에 리스트를 분할합니다. 다음에,reverse(List)
메소드는, 각각의 사브리스트뷰로 불려 가 최종적으로는 리스트 전체로 불려 갑니다. 2 개의 알고리즘의 상세한 것에 대하여는, Jon Bentley 의 「Programming Pearls」(Addison-Wesley, 1986)의 섹션 2.3 을 참조해 주세요.
list
- 회전되는 리스트distance
- 리스트를 회전하는 거리. 이 값에 제약은 없고, 값은 0 에서도, 부에서도,list.size() 보다 커도 상관없다
UnsupportedOperationException
- 지정된 리스트 또는 그 리스트 반복자가 set 오퍼레이션을 지원하지 않는 경우public static <T> boolean replaceAll(List <T> list, T oldVal, T newVal)
list
- 치환이 생기는 리스트oldVal
- 치환전의 값newVal
- oldVal 의 치환 후의 값
UnsupportedOperationException
- 지정된 리스트 또는 그 리스트 반복자가 set 오퍼레이션을 지원하지 않는 경우public static int indexOfSubList(List <? > source, List <? > target)
이 구현은, 소스 리스트를 스캐닝 하는 「강행인」기술을 사용해, 소스 리스트의 여러분치로 타겟과 일치할까 차례로 검색합니다.
source
- 최초로 출현하는 target 를 검색하는 리스트target
- source 의 subList 로서 검색하는 리스트
public static int lastIndexOfSubList(List <? > source, List <? > target)
이 구현에서는, 소스 리스트의 반복 처리를 실시하는 「강행인」기술을 사용해, 여러분치로 타겟과 일치할까 차례로 검색합니다.
source
- 마지막에 출현하는 target 를 검색하는 리스트target
- source 의 subList 로서 검색하는 리스트
public static <T> Collection <T> unmodifiableCollection(Collection <? extends T> c)
반환된 컬렉션은, hashCode 오퍼레이션 및 equals 오퍼레이션을 기가 되는 컬렉션에 건네줄 것은 없고,Object 의 equals 메소드 및 hashCode 메소드에 의존합니다. 이것은, 기가 되는 컬렉션이 세트 또는 리스트의 경우에 그러한 오퍼레이션의 규약을 지키기 위해서 필요합니다.
반환된 컬렉션은, 지정된 컬렉션이 직렬화 가능의 경우는 직렬화 가능합니다.
c
- 변경 불가능한 뷰가 반환되는 컬렉션
public static <T> Set <T> unmodifiableSet(Set <? extends T> s)
반환되는 세트는, 지정된 세트가 직렬화 가능의 경우에 직렬화 가능하게 됩니다.
s
- 변경 불가능한 뷰가 반환되는 세트
public static <T> SortedSet <T> unmodifiableSortedSet(SortedSet <T> s)
반환된 소트 세트는, 지정된 소트 세트가 직렬화 가능의 경우는 직렬화 가능합니다.
s
- 변경 불가능한 뷰가 반환되는 소트 세트
public static <T> List <T> unmodifiableList(List <? extends T> list)
반환된 리스트는, 지정된 리스트가 직렬화 가능의 경우에만 직렬화 가능하게 됩니다. 또, 지정된 리스트가 RandomAccess
를 구현하는 경우에만, 반환된 리스트는 RandomAccess
를 구현합니다.
list
- 변경 불가능한 뷰가 반환되는 리스트
public static <K, V> Map <K, V> unmodifiableMap(Map <? extends K,? extends V> m)
반환된 맵은, 지정된 맵이 직렬화 가능의 경우는 직렬화 가능합니다.
m
- 변경 불가능한 뷰가 반환되는 맵
public static <K, V> SortedMap <K, V> unmodifiableSortedMap(SortedMap <K,? extends V> m)
반환된 소트 맵은, 지정된 소트 맵이 직렬화 가능의 경우는 직렬화 가능합니다.
m
- 변경 불가능한 뷰가 반환되는 소트 맵
public static <T> Collection <T> synchronizedCollection(Collection <T> c)
반환된 컬렉션의 반복 처리를 실시하는 경우, 사용자는, 다음에 나타내도록(듯이) 수동으로 동기를 잡을 필요가 있습니다.
Collection c = Collections.synchronizedCollection(myCollection); ... synchronized(c) { Iterator i = c.iterator(); // Must be in the synchronized block while (i.hasNext()) foo(i.next()); }이것을 실시하지 않는 경우, 동작은 보증되지 않습니다.
반환된 컬렉션은,hashCode 오퍼레이션 및 equals 오퍼레이션을 기가 되는 컬렉션에 건네줄 것은 없고,Object 의 equals 및 hashCode 메소드에 의존합니다. 이것은, 기가 되는 컬렉션이 세트 또는 리스트의 경우에 그러한 오퍼레이션의 규약을 지키기 위해서 필요합니다.
반환된 컬렉션은, 지정된 컬렉션이 직렬화 가능의 경우는 직렬화 가능합니다.
c
- 동기 컬렉션에 「랩」되는 컬렉션
public static <T> Set <T> synchronizedSet(Set <T> s)
반환된 세트의 반복 처리를 실시하는 경우, 사용자는, 다음에 나타내도록(듯이) 수동으로 동기를 잡을 필요가 있습니다.
Set s = Collections.synchronizedSet(new HashSet()); ... synchronized(s) { Iterator i = s.iterator(); // Must be in the synchronized block while (i.hasNext()) foo(i.next()); }이것을 실시하지 않는 경우, 동작은 보증되지 않습니다.
반환되는 세트는, 지정된 세트가 직렬화 가능의 경우에 직렬화 가능하게 됩니다.
s
- 동기 세트에 「랩」되는 세트
public static <T> SortedSet <T> synchronizedSortedSet(SortedSet <T> s)
반환된 소트 세트, 또는 그 subSet,headSet, 혹은 tailSet 뷰의 반복 처리를 실시하는 경우, 사용자는, 다음에 나타내도록(듯이) 수동으로 동기를 잡을 필요가 있습니다.
SortedSet s = Collections.synchronizedSortedSet(new TreeSet()); ... synchronized(s) { Iterator i = s.iterator(); // Must be in the synchronized block while (i.hasNext()) foo(i.next()); }또는
SortedSet s = Collections.synchronizedSortedSet(new TreeSet()); SortedSet s2 = s.headSet(foo); ... synchronized(s) { // Note: s, not s2!!! Iterator i = s2.iterator(); // Must be in the synchronized block while (i.hasNext()) foo(i.next()); }이것을 실시하지 않는 경우, 동작은 보증되지 않습니다.
반환된 소트 세트는, 지정된 소트 세트가 직렬화 가능의 경우는 직렬화 가능합니다.
s
- 동기 소트 세트에 「랩」되는 소트 세트
public static <T> List <T> synchronizedList(List <T> list)
반환된 리스트의 반복 처리를 실시하는 경우, 사용자는, 다음에 나타내도록(듯이) 수동으로 동기를 잡을 필요가 있습니다.
List list = Collections.synchronizedList(new ArrayList()); ... synchronized(list) { Iterator i = list.iterator(); // Must be in synchronized block while (i.hasNext()) foo(i.next()); }이것을 실시하지 않는 경우, 동작은 보증되지 않습니다.
반환된 리스트는, 지정된 리스트가 직렬화 가능의 경우에만 직렬화 가능하게 됩니다.
list
- 동기 리스트에 「랩」되는 리스트
public static <K, V> Map <K, V> synchronizedMap(Map <K, V> m)
반환된 맵의 코레크션뷰에서의 반복 처리를 실시하는 경우, 사용자는, 다음에 나타내도록(듯이) 수동으로 동기를 잡을 필요가 있습니다.
Map m = Collections.synchronizedMap(new HashMap()); ... Set s = m.keySet(); // Needn't be in synchronized block ... synchronized(m) { // Synchronizing on m, not s! Iterator i = s.iterator(); // Must be in synchronized block while (i.hasNext()) foo(i.next()); }이것을 실시하지 않는 경우, 동작은 보증되지 않습니다.
반환된 맵은, 지정된 맵이 직렬화 가능의 경우는 직렬화 가능합니다.
m
- 동기 맵에 「랩」되는 맵
public static <K, V> SortedMap <K, V> synchronizedSortedMap(SortedMap <K, V> m)
반환된 소트 맵의 코레크션뷰, 또는 subMap,headMap,tailMap 뷰의 코레크션뷰에서의 반복 처리를 실시하는 경우, 사용자는, 다음에 나타내도록(듯이) 수동으로 동기를 잡을 필요가 있습니다.
SortedMap m = Collections.synchronizedSortedMap(new TreeMap()); ... Set s = m.keySet(); // Needn't be in synchronized block ... synchronized(m) { // Synchronizing on m, not s! Iterator i = s.iterator(); // Must be in synchronized block while (i.hasNext()) foo(i.next()); }또는
SortedMap m = Collections.synchronizedSortedMap(new TreeMap()); SortedMap m2 = m.subMap(foo, bar); ... Set s2 = m2.keySet(); // Needn't be in synchronized block ... synchronized(m) { // Synchronizing on m, not m2 or s2! Iterator i = s.iterator(); // Must be in synchronized block while (i.hasNext()) foo(i.next()); }이것을 실시하지 않는 경우, 동작은 보증되지 않습니다.
반환된 소트 맵은, 지정된 소트 맵이 직렬화 가능의 경우는 직렬화 가능합니다.
m
- 동기 소트 맵에 「랩」되는 소트 맵
public static <E> Collection <E> checkedCollection(Collection <E> c, Class <E> type)
언어내의 총칭 메카니즘에 의해 컴파일시 (정적)의 형태 체크가 제공됩니다만, 체크되지 않는 캐스트를 사용해 이 메카니즘을 무효로 할 수 없습니다. 일반적으로, 이런 종류의 체크되지 않는 조작 모두로 컴파일러가 경고를 발행하기 위해(때문에), 이것은 문제로는 되지 않습니다. 다만, 때로는, 정적인 형태 체크만으로는 불충분한 경우가 있습니다. 예를 들어, 컬렉션이 서드 파티의 라이브러리에게 건네지지만, 라이브러리 코드가 부정한 형태의 요소를 삽입해 컬렉션을 파괴해 버리는 것이 있어서는 안되는 경우 등입니다. 동적으로 형태 보증된 뷰의 다른 용도는, 디버그입니다.
프로그램이 ClassCastException 로 실패해, 부정한 형태의 요소가 파라미터화 된 컬렉션에 넣어진 것을 나타내는 경우를 생각합시다. 유감스럽게, 부정한 요소가 삽입되는 곳의 예외가 항상 발생할 가능성이 있기 (위해)때문에, 이 예외로부터 문제의 소스에 관한 정보를 거의 또는 전혀 얻을 수 있지 않습니다. 문제가 재현 가능한 경우는, 프로그램을 변경해 동적인 형태 보증된 뷰로 컬렉션을 일시적으로 랩 하는 것으로, 소스를 재빠르게 판정할 수 있습니다. 예를 들어, 선언
Collection<String> c = new HashSet<String>();(은)는, 다음의 선언으로 일시적으로 옮겨놓을 수가 있습니다.
Collection<String> c = Collections.checkedCollection( new HashSet<String>(), String.class);프로그램을 재차 실행하면(자), 부정한 형태의 요소가 컬렉션에 삽입된 위치에서 프로그램이 실패하기 위해(때문에), 문제의 원인을 분명히 식별할 수 있습니다. 문제를 수정하면(자), 변경한 선언을 바탕으로 되돌립니다.
반환된 컬렉션은, hashCode 오퍼레이션 및 equals 오퍼레이션을 기가 되는 컬렉션에 건네줄 것은 없고,Object 의 equals 메소드 및 hashCode 메소드에 의존합니다. 이것은, 기가 되는 컬렉션이 세트 또는 리스트의 경우에 그러한 오퍼레이션의 규약을 지키기 위해서 필요합니다.
반환된 컬렉션은, 지정된 컬렉션이 직렬화 가능의 경우는 직렬화 가능합니다.
c
- 동적으로 형태 보증된 뷰가 반환되는 컬렉션type
- c 가 보관 유지하는 것이 용서된 요소의 형태
public static <E> Set <E> checkedSet(Set <E> s, Class <E> type)
동적으로 형태 보증된 뷰의 사용에 대해서는,checkedCollection
메소드의 문서를 참조해 주세요.
반환되는 세트는, 지정된 세트가 직렬화 가능의 경우에 직렬화 가능하게 됩니다.
s
- 동적으로 형태 보증된 뷰가 반환되는 세트type
- s 가 보관 유지하는 것이 용서된 요소의 형태
public static <E> SortedSet <E> checkedSortedSet(SortedSet <E> s, Class <E> type)
동적으로 형태 보증된 뷰의 사용에 대해서는,checkedCollection
메소드의 문서를 참조해 주세요.
반환된 소트 세트는, 지정된 소트 세트가 직렬화 가능의 경우는 직렬화 가능합니다.
s
- 동적으로 형태 보증된 뷰가 반환되는 소트 세트type
- s 가 보관 유지하는 것이 용서된 요소의 형태
public static <E> List <E> checkedList(List <E> list, Class <E> type)
동적으로 형태 보증된 뷰의 사용에 대해서는,checkedCollection
메소드의 문서를 참조해 주세요.
반환된 리스트는, 지정된 리스트가 직렬화 가능의 경우에만 직렬화 가능하게 됩니다.
list
- 동적으로 형태 보증된 뷰가 반환되는 리스트type
- list 가 보관 유지하는 것이 용서된 요소의 형태
public static <K, V> Map <K, V> checkedMap(Map <K, V> m, Class <K> keyType, Class <V> valueType)
엔트리 세트
뷰로부터 취득된 Map.Entry
인스턴스를 개입시켜 시도될까에 관계없이, 곧바로 ClassCastException 가 throw 됩니다.
동적으로 형태 보증된 뷰가 생성되기 전에, 부정한 형태의 키 또는 값이 맵에 포함되지 않고, 맵에의 후속의 액세스가 모두 뷰 (또는 코레크션뷰의 1 개)를 개입시켜 행해지는 경우, 맵에 부정한 형태의 키나 값이 포함되지 않는 것이 보증됩니다.
동적으로 형태 보증된 뷰의 사용에 대해서는,checkedCollection
메소드의 문서를 참조해 주세요.
반환된 맵은, 지정된 맵이 직렬화 가능의 경우는 직렬화 가능합니다.
m
- 동적으로 형태 보증된 뷰가 반환되는 맵keyType
- m 가 보관 유지하는 것이 용서된 키의 형태valueType
- m 가 보관 유지하는 것이 용서된 값의 형태
public static <K, V> SortedMap <K, V> checkedSortedMap(SortedMap <K, V> m, Class <K> keyType, Class <V> valueType)
엔트리 세트
뷰로부터 취득된 Map.Entry
인스턴스를 개입시켜 시도될까에 관계없이, 곧바로 ClassCastException 가 throw 됩니다.
동적으로 형태 보증된 뷰가 생성되기 전에, 부정한 형태의 키 또는 값이 맵에 포함되지 않고, 맵에의 후속의 액세스가 모두 뷰 (또는 코레크션뷰의 1 개)를 개입시켜 행해지는 경우, 맵에 부정한 형태의 키나 값이 포함되지 않는 것이 보증됩니다.
동적으로 형태 보증된 뷰의 사용에 대해서는,checkedCollection
메소드의 문서를 참조해 주세요.
반환된 맵은, 지정된 맵이 직렬화 가능의 경우는 직렬화 가능합니다.
m
- 동적으로 형태 보증된 뷰가 반환되는 맵keyType
- m 가 보관 유지하는 것이 용서된 키의 형태valueType
- m 가 보관 유지하는 것이 용서된 값의 형태
public static final <T> Set <T> emptySet()
다음에, 빈 상태(empty)세트를 취득하기 위한 형 보증된 방법의 예를 나타냅니다.
Set<String> s = Collections.emptySet();구현상의 주의:이 메소드의 구현에서는, 호출할 것에 개별의 Set 객체를 작성할 필요는 없습니다. 이 메소드는 같은 이름을 붙일 수 있었던 필드를 사용한 비교 가능한 코스트가 있는 것 같은 것입니다 (이 메소드와는 달라, 필드는 형태 보증하지 않는다).
EMPTY_SET
public static final <T> List <T> emptyList()
다음에, 빈 상태(empty)의 리스트를 취득하기 위한 형 보증된 방법의 예를 나타냅니다.
List<String> s = Collections.emptyList();구현상의 주의:이 메소드의 구현에서는, 각 호출할 것에 개별의 List 객체를 작성할 필요는 없습니다. 이 메소드는 같은 이름을 붙일 수 있었던 필드를 사용한 비교 가능한 코스트가 있는 것 같은 것입니다 (이 메소드와는 달라, 필드는 형태 보증하지 않는다).
EMPTY_LIST
public static final <K, V> Map <K, V> emptyMap()
다음에, 빈 상태(empty)세트를 취득하기 위한 형 보증된 방법의 예를 나타냅니다.
Map<String, Date> s = Collections.emptyMap();구현상의 주의:이 메소드의 구현에서는, 각 호출할 것에 개별의 Map 객체를 작성할 필요는 없습니다. 이 메소드는 같은 이름을 붙일 수 있었던 필드를 사용한 비교 가능한 코스트가 있는 것 같은 것입니다 (이 메소드와는 달라, 필드는 형태 보증하지 않는다).
EMPTY_MAP
public static <T> Set <T> singleton(T o)
o
- 반환되는 세트에 포함되고 있는 유일한 객체
public static <T> List <T> singletonList(T o)
o
- 반환되는 리스트에 포함되고 있는 유일한 객체
public static <K, V> Map <K, V> singletonMap(K key, V value)
key
- 반환되는 맵에 포함되고 있는 유일한 키value
- 반환되는 맵에 의해 key 가 매핑 되는 값
public static <T> List <T> nCopies(int n, T o)
n
- 반환되는 리스트의 요소수o
- 반환되는 리스트에 반복해 나타나는 요소
IllegalArgumentException
- n < 0 의 경우List.addAll(Collection)
,
List.addAll(int, Collection)
public static <T> Comparator <T> reverseOrder()
Arrays.sort(a, Collections.reverseOrder());역인 나무의 사전 편집순서 (알파벳순서)로 배열을 소트 합니다.
반환되는 Comparator는 직렬화 가능합니다.
Comparable
public static <T> Comparator <T> reverseOrder(Comparator <T> cmp)
reverseOrder()
와 등가가 됩니다 (즉, Comparable 인터페이스를 구현하는 객체의 컬렉션에 역의 「자연 순서」를 의무화 하는 Comparator를 돌려준다).
반환되는 Comparator는 직렬화 가능합니다 (지정된 Comparator도 직렬화 가능한가 null 의 경우).
public static <T> Enumeration <T> enumeration(Collection <T> c)
c
- 열거가 반환되는 컬렉션
Enumeration
public static <T> ArrayList <T> list(Enumeration <T> e)
e
- 반환되는 배열 리스트의 요소를 제공하는 열거
Enumeration
,
ArrayList
public static int frequency(Collection <? > c, Object o)
c
- o 의 빈도를 판정하는 컬렉션o
- 빈도를 판정하는 객체
NullPointerException
- c 가 null 의 경우public static boolean disjoint(Collection <? > c1, Collection <? > c2)
Collection 의 범용 규약에 준거하지 않는 컬렉션에 대해서 이 메소드를 사용하는 경우는, 주의가 필요합니다. 구현이, 한편의 컬렉션에 대해서 처리를 반복해 실행해, 한편의 컬렉션내에 포함될지 어떨지를 테스트하는 (또는 등가인 계산을 실행한다) 경우가 있습니다. 한편의 컬렉션이 비표준의 등가 테스트를 사용하는 경우 (순서가 등가와의 호환성을 가지지 않는 SortedSet
나,IdentityHashMap
의 키 세트와 같이) , 양쪽 모두의 컬렉션으로 같은 비표준의 등가 테스트를 사용할 필요가 있습니다. 그렇지 않은 경우의 이 메소드의 결과는 정의되고 있지 않습니다.
양쪽 모두의 파라미터내에서 같은 컬렉션을 건네주는 것은 허용 되고 있습니다. 이 경우, 컬렉션이 빈 상태(empty)의 경우에게만, 메소드는 true 를 돌려줍니다.
c1
- 컬렉션c2
- 컬렉션
NullPointerException
- 어느 쪽인가의 컬렉션이 null 의 경우public static <T> boolean addAll(Collection <? super T> c, T... elements)
요소를 개별적으로 지정하는 경우, 이 메소드에서는, 다음의 예의 같게, 여러종류의 요소를 기존의 컬렉션에 간단하게 추가할 수 있습니다.
Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");
c
- elements 가 삽입되는 컬렉션elements
- c 에 삽입되는 요소
UnsupportedOperationException
- c 가 add 오퍼레이션을 지원하지 않는 경우
NullPointerException
- elements 에 1 개 이상의 null 요소가 포함되어 있어c 가 null 요소를 허가하지 않는 경우, 혹은 c 또는 elements 가 null 의 경우
IllegalArgumentException
- elements 의 값이 있는 프로퍼티이 원인으로,c 에 추가할 수 없는 경우Collection.addAll(Collection)
public static <E> Set <E> newSetFromMap(Map <E,Boolean > map)
Map
구현에 대응하는 Set
구현을 제공합니다. HashMap
나 TreeMap
등 대응하는 Set
구현이 벌써 있는 Map
구현에서는, 이 메소드를 사용할 필요는 없습니다.
이 메소드에 의해 반환되는 세트에서의 각각의 메소드 호출에 의해, 1 개의 예외를 제외해, 기본으로 되는 맵인가 그 keySet 뷰로 메소드 호출이 1 개만 발생합니다. addAll 메소드는, 기본으로 되는 맵의 일련의 put 호출로서 구현됩니다.
지정된 맵은, 이 메소드가 불려 간 시점에서는 빈 상태(empty)이 아니면 안되어, 이 메소드의 종료후는 직접 액세스 할 수 없습니다. 이러한 조건은, 다음의 코드의 발췌에 나타내도록(듯이), 맵이 빈 상태(empty) 상태로 작성되어 이 메소드에 직접 건네받아 맵에의 참조가 보관 유지되지 않는 경우에 보증됩니다.
Set<Object> weakHashSet = Collections.newSetFromMap( new WeakHashMap<Object, Boolean>());
map
- 기본으로 되는 맵
IllegalArgumentException
- map 가 빈 상태(empty)이 아닌 경우public static <T> Queue <T> asLifoQueue(Deque <T> deque)
Deque
의 뷰를 후입선출 (Lifo) Queue
로서 돌려줍니다. add 메소드는 push 에 맵 되어remove 메소드는 pop 에 맵 되어 이하와 같이 맵 됩니다. 이 뷰는,Queue 가 필요한 메소드를 사용하고 싶지만 Lifo 순서부가 필요한 경우에 유효한 일이 있습니다.
이 메소드에 의해 반환되는 큐에서의 각각의 메소드 호출에 의해, 1 개의 예외를 제외해, 기본으로 되는 양단 큐로 메소드 호출이 1 개만 발생합니다. addAll
메소드는, 기본으로 되는 양단 큐의 일련의 addFirst
호출로서 실행됩니다.
deque
- 양단 큐
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.