1. 방법 목록

ArraysJava 제작자가 배열로 작업할 때 편의를 위해 전체 도우미 클래스를 작성했다는 것을 기억하십니까 ?

그들은 컬렉션에 대해서도 같은 일을 했습니다. Java에는 java.util.Collections컬렉션 작업에 유용한 많은 메서드가 있는 클래스가 있습니다. 다음은 가장 흥미로운 것들입니다.

행동 양식 설명
addAll(colls, e1, e2, e3, ...)
요소 e1, e2, e3, ... 를 colls컬렉션 에 추가합니다.
fill(list, obj)
전달된 목록의 모든 요소를obj
nCopies(n, obj)
개체 n의 복사본 목록을 반환합니다.obj
replaceAll(list, oldVal, newVal)
목록 에서 oldVal의 모든 인스턴스를 로 바꿉니다.newVallist
copy(dest, src)
목록의 모든 요소를 ​​목록 src으로 복사dest
reverse(list)
목록을 뒤집습니다.
sort(list)
목록을 오름차순으로 정렬
rotate(list, n)
목록 의 요소를 요소 list별로 주기적으로 이동합니다.n
shuffle(list)
목록의 요소를 무작위로 섞습니다.
min(colls)
colls컬렉션 에서 최소 요소를 찾습니다.
max(colls)
colls컬렉션 에서 최대 요소를 찾습니다.
frequency(colls, obj)
컬렉션 obj에서 요소가 나타나는 횟수를 결정합니다.colls
binarySearch(list, key)
key정렬된 목록에서 검색하여 해당 인덱스를 반환합니다.
disjoint(colls1, colls2)
true컬렉션에 공통 요소가 없는 경우 반환
중요한:

ArrayList이러한 메서드 중 다수는 , HashSet및 클래스 자체를 사용하지 않지만 HashMap해당 인터페이스( Collection<T>, List<T>, ) 를 사용합니다 Map<K, V>.

이것은 문제가 되지 않습니다. 메서드가 a 를 허용하면 List<T>항상 an 을 전달할 수 ArrayList<Integer>있지만 대입 연산자는 반대 방향으로 작동하지 않습니다.


2. 컬렉션 생성 및 수정

Collections.addAll(Collection<T> colls, T e1, T e2, T e3, ...)방법

메서드 addAll()는 요소 e1, e2, e3, ... 를 colls컬렉션에 추가합니다. 원하는 수의 요소를 전달할 수 있습니다.

암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

for (int i: list)
   System.out.println(i);
1
2
3
4
5

Collections.fill(List<T> list, T obj)방법

fill()메서드는 컬렉션의 모든 요소를 ​​요소 list로 바꿉니다 obj.

암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.fill(list, 10);

for (int i: list)
   System.out.println(i);
10
10
10

Collections.nCopies(int n, T obj)방법

메서드 는 요소 의 복사본 nCopies()목록을 반환합니다 . 반환된 목록은 변경할 수 없으므로 변경할 수 없습니다! 값을 읽는 데만 사용할 수 있습니다.nobj

암호 설명
List<String> immutableList = Collections.nCopies(5, "Hello");

ArrayList<String> list = new ArrayList<String>(immutableList);

for(String s: list)
   System.out.println(s);
Hello5개 문자열 의 변경 불가능한 목록 만들기
변경 가능한 항목을 만들고 목록 list의 값으로 채웁니다 immutableList.

콘솔 출력:
Hello
Hello
Hello
Hello
Hello

Collections.replaceAll (List<T> list, T oldValue, T newValue)방법

이 메서드 는 컬렉션 replaceAll()의 모든 요소를 list​​로 바꿉니다 .oldValuenewValue

암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.replaceAll(list, 2, 20);

for (int i: list)
   System.out.println(i);
1
20
3

Collections.copy (List<T> dest, List<T> src)방법

copy()메서드는 컬렉션의 모든 요소를 ​​컬렉션 src에 복사합니다 dest.

컬렉션 이 컬렉션 dest보다 더 오래 시작되면 컬렉션 src의 나머지 요소는 dest그대로 유지됩니다.

중요한:
컬렉션 은 dest최소한 컬렉션만큼 길어야 합니다 src(그렇지 않으면 an이 IndexOutOfBoundsException발생합니다).
암호 콘솔 출력
ArrayList<Integer> srcList = new ArrayList<Integer>();
Collections.addAll(srcList, 99, 98, 97);

ArrayList<Integer> destList = new ArrayList<Integer>();
Collections.addAll(destList, 1, 2, 3, 4, 5, 6, 7);

Collections.copy(destList, srcList);

for (int i: destList)
   System.out.println(i);
99
98
97
4
5
6
7


3. 원소의 순서

Collections.reverse(List<T> list)방법

메서드 reverse()는 전달된 목록의 요소 순서를 반대로 바꿉니다.

암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.reverse(list);

for (int i: list)
   System.out.println(i);
5
4
3
2
1

Collections.sort(List<T> list)방법

메서드 sort()는 전달된 목록을 오름차순으로 정렬합니다.

암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

Collections.sort(list);

for (int i: list)
   System.out.println(i);
2
4
11
15
23

Collections.rotate(List<T> list, int distance)방법

rotate()메서드는 전달된 목록의 요소를 distance위치 앞으로 주기적으로 이동합니다.

암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7, 8, 9);

Collections.rotate(list, 3); // Shift by 3 positions

for (int i: list)
   System.out.println(i);
7
8
9
1
2
3
4
5
6

Collections.shuffle(List<T> list)방법

shuffle()메서드는 전달된 목록의 모든 요소를 ​​무작위로 섞습니다. 결과는 매번 다릅니다.

암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.shuffle(list); // Shuffle the elements

for (int i: list)
   System.out.println(i);
5
2
4
3
1


4. 컬렉션에서 요소 찾기

Collections.min(Collection<T> colls)방법

min()메서드는 컬렉션의 최소 요소를 반환합니다.

암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int min = Collections.min(list);

System.out.println(min);
2

Collections.max(Collection<T> colls)방법

max()메서드는 컬렉션의 최대 요소를 반환합니다.

암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int max = Collections.max(list);

System.out.println(max);
23

Collections.frequency(Collection<T> colls, T obj)방법

메서드 는 요소가 컬렉션 에서 발생하는 frequency()횟수를 계산합니다.objcolls

암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15, 4, 2, 4);

int count = Collections.frequency(list, 4);

System.out.println(count);
3

Collections.binarySearch(Collection<T> colls, T obj)방법

메서드 는 컬렉션 에서 요소를 binarySearch()검색합니다 . 찾은 요소의 인덱스를 반환합니다. 요소를 찾을 수 없으면 음수를 반환합니다.objcolls

중요한:
메서드 를 호출하기 전에 binarySearch()컬렉션을 정렬해야 합니다( 사용 Collections.sort()).
암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 5, 15, 4, 2, 4);

Collections.sort(list);  // 2, 2, 4, 4, 5, 11, 15, 23

int index = Collections.binarySearch(list, 5);    // 4
System.out.println(index);

int index2 = Collections.binarySearch(list, 15);  // 6
System.out.println(index2);

int index3 = Collections.binarySearch(list, 16); // The element doesn't exist
System.out.println(index3);
4
6
-8

Collections.disjoint(Collection<T> coll1, Collection<T> coll2)방법

전달된 컬렉션에 공통 요소가 없는 경우 메서드 disjoint()가 반환됩니다 .true

암호 콘솔 출력
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7);

ArrayList<Integer> list2 = new ArrayList<Integer>();
Collections.addAll(list2, 99, 98, 97);

boolean isDifferent = Collections.disjoint(list, list2);
System.out.println(isDifferent);
true