1. Lista metod

Pamiętaj, że programiści Java napisali całą klasę pomocniczą dla wygody pracy z tablicami - Arrays?

W przypadku kolekcji zrobili to samo. Java ma klasę java.util.Collections, która ma wiele metod przydatnych podczas pracy z kolekcjami. Poniżej prezentujemy tylko najciekawsze z nich:

Metody Opis
addAll(colls, e1, e2, e3, ..)
Dodaje collselementy e1, e2, e3,... do kolekcji.
fill(list, obj)
Zamienia wszystkie elementy na podanej liście naobj
nCopies(n, obj)
Zwraca listę nkopii obiektuobj
replaceAll(list, oldVal, newVal)
Zamienia listwszystkie wartości na liście oldValnanewVal
copy(dest, src)
Kopiuje wszystkie elementy z listy srcdo listydest
reverse(list)
Odwraca listę do tyłu
sort(list)
Sortuje listę w porządku rosnącym
rotate(list, n)
Cyklicznie przesuwa elementy listy listo nelementy
shuffle(list)
Losowo tasuje elementy listy
min(colls)
Znajduje minimalny element kolekcjicolls
max(colls)
Znajduje maksymalny element kolekcjicolls
frequency(colls, obj)
Określa, ile razy element objwystępuje w kolekcjicolls
binarySearch(list, key)
Wyszukuje element keyw posortowanej liście, zwraca indeks.
disjoint(colls1, colls2)
Zwraca true, jeśli kolekcje nie mają wspólnych elementów
Ważny:

Wiele z tych metod działa nie z klasami ArrayList, HashSeti HashMap, ale z ich interfejsami: Collection<T>, List<T>, Map<K, V>.

To nie jest problem: jeśli metoda zaakceptuje List<T>, zawsze możesz do niej przejść ArrayList<Integer>, ale przypisanie nie działa w przeciwnym kierunku.


2. Tworzenie i modyfikowanie kolekcji

metodaCollections.addAll(Collection<T> colls, T e1, T e2, T e3, ...)

Metoda addAll()dodaje do kolekcji collselementy e1, e2, e3, .... Liczba przekazywanych elementów może być dowolna.

Kod Wyjście na wyświetlaczu
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

metodaCollections.fill(List<T> list, T obj)

Metoda fill()zastępuje wszystkie elementy kolekcji listelementem obj.

Kod Wyjście na wyświetlaczu
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

metodaCollections.nCopies (int n, T obj)

Metoda nCopies()zwraca listę nkopii elementów obj. Listę można nazwać fikcyjną (w środku nie ma prawdziwej tablicy), więc nie możesz jej zmienić! Może być tylko do odczytu.

Kod Opis
List<String> fake = Collections.nCopies(5, "Cześć");

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

for(String s: list)
   System.out.println(s);
Stwórz niezmienną listę 5 elementów Привет
Stwórz prawdziwą listę list, wypełnij ją wartościami z listy fake.

Na ekranie wyświetlamy:
Привет
Привет
Привет
Привет
Привет

metodaCollections.replaceAll (List<T> list, T oldValue, T newValue)

Metoda replaceAll()zastępuje wszystkie elementy kolekcji list, które są oldValuerówne newValue.

Kod Wyjście na wyświetlaczu
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

metodaCollections.copy (List<T> dest, List<T> src)

Metoda copy()kopiuje wszystkie elementy kolekcji srcdo kolekcji dest.

Jeśli kolekcja jest początkowo destdłuższa niż kolekcja src, pozostałe elementy w kolekcji destpozostaną nietknięte.

Ważny:
Kolekcja destmusi mieć długość nie mniejszą niż długość kolekcji src(w przeciwnym razie zostanie zgłoszony wyjątek IndexOutOfBoundsException).
Kod Wyjście na wyświetlaczu
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. Kolejność elementów

metodaCollections.reverse(List<T> list)

Metoda reverse()odwraca kolejność przekazywanych do niej elementów listy.

Kod Wyjście na wyświetlaczu
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

metodaCollections.sort(List<T> list)

Metoda sort()sortuje przekazaną do niej listę w porządku rosnącym.

Kod Wyjście na wyświetlaczu
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

metodaCollections.rotate(List<T> list, int distance)

Metoda rotate()cyklicznie przesuwa przekazywane do niej elementy o distancepozycje do przodu.

Kod Wyjście na wyświetlaczu
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7, 8, 9);

Collections.rotate(list, 3); // сдвинуть на 3 позиции

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

metodaCollections.shuffle(List<T> list)

Metoda shuffle()tasuje losowo wszystkie elementy przekazanej listy. Rezultat jest za każdym razem inny.

Kod Wyjście na wyświetlaczu
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.shuffle(list); // перемешиваем

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


4. Wyszukaj pozycje w kolekcjach

metodaCollections.min(Collection<T> colls)

Metoda min()zwraca minimalny element kolekcji.

Kod Wyjście na wyświetlaczu
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int min = Collections.min(list);

System.out.println(min);
2

metodaCollections.max(Collection<T> colls)

Metoda max()zwraca maksymalny element kolekcji.

Kod Wyjście na wyświetlaczu
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int max = Collections.max(list);

System.out.println(max);
23

metodaCollections.frequency(Collection<T> colls, T obj)

Metoda frequency()zlicza, ile razy collselement występuje w kolekcjiobj

Kod Wyjście na wyświetlaczu
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

metodaCollections.binarySearch(Collection<T> colls, T obj)

Metoda binarySearch()szuka elementu objw kolekcji colls. Zwraca numer znalezionego elementu. Jeśli element nie zostanie znaleziony, zwraca liczbę ujemną.

Ważny:
Przed wywołaniem metody binarySearch()należy posortować kolekcję ( Collections.sort()).
Kod Wyjście na wyświetlaczu
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);  // нет
System.out.println(index3);
4
6
-8

metodaCollections.disjoint(Collection<T> coll1, Collection<T> coll2)

Metoda disjoint()zwraca true, jeśli przekazane kolekcje nie mają identycznych elementów.

Kod Wyjście na wyświetlaczu
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