CodeGym /Java курс /Модул 1 /Колекции — помощен клас

Колекции — помощен клас

Модул 1
Ниво , Урок
На разположение

1. Списък на методите

Помните ли, че създателите на Java написаха цял помощен клас, призван Arraysза наше удобство при работа с масиви?

Те направиха същото за колекциите. 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с newValв listсписъка
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>.

Това не е проблем: ако даден метод приема List<T>, винаги можете да му предадете 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()връща списък с nкопия на objелемента. Имайте предвид, че върнатият списък е неизменен, което означава, че не можете да го промените! Можете да го използвате само за четене на стойности:

Код Описание
List<String> immutableList = Collections.nCopies(5, "Hello");

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

for(String s: list)
   System.out.println(s);
Създайте неизменен списък от 5 Helloниза
Създайте променлив listи го попълнете със стойностите от immutableListсписъка.

Конзолен изход:
Hello
Hello
Hello
Hello
Hello

Collections.replaceAll (List<T> list, T oldValue, T newValue)метод

Методът replaceAll()замества всички елементи в колекцията, listравна на oldValueс newValue.

Код Конзолен изход
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колекцията (в противен случай 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()отчита колко пъти елементът objсе среща в collsколекцията

Код Конзолен изход
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()търси елемента objв collsколекцията. Връща индекса на намерения елемент. Връща отрицателно число, ако елементът не е намерен.

Важно:
Преди да извикате 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, ако предадените колекции нямат ниHowви общи елементи.

Код Конзолен изход
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

Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION