CodeGym /Java tanfolyam / /Gyűjtemények — segítő osztály

Gyűjtemények — segítő osztály

Szint , Lecke
Elérhető

1. A módszerek listája

Emlékszel, hogy a Java készítői egy egész segédosztályt írtak, amelyet Arraysa mi kényelmünk érdekében hívtak a tömbökkel való munka során?

Ugyanezt tették a gyűjtemények esetében is. A Java-nak van egy java.util.Collectionsosztálya, amely sok olyan metódussal rendelkezik, amelyek hasznosak a gyűjteményekkel való munkához. Íme, csak a legérdekesebbek:

Mód Leírás
addAll(colls, e1, e2, e3, ...)
Hozzáadja a e1, e2, e3, ... elemeket a collsgyűjteményhez
fill(list, obj)
Az átadott lista összes elemét lecseréli erre:obj
nCopies(n, obj)
nAz objobjektum másolatainak listáját adja vissza
replaceAll(list, oldVal, newVal)
A listában oldValszereplő összes példányát lecseréli -renewVallist
copy(dest, src)
srcA listából az összes elemet a destlistába másolja
reverse(list)
Megfordítja a listát.
sort(list)
Növekvő sorrendbe rendezi a listát
rotate(list, n)
Ciklikusan eltolja a listlista elemeit nelemenként
shuffle(list)
Véletlenszerűen megkeveri a lista elemeit
min(colls)
Megkeresi a minimális elemet a collsgyűjteményben
max(colls)
Megkeresi a collsgyűjtemény maximális elemét
frequency(colls, obj)
Meghatározza, hogy az elem hányszor objforduljon elő a collsgyűjteményben
binarySearch(list, key)
Megkeresi keyegy rendezett listában, és visszaadja a megfelelő indexet.
disjoint(colls1, colls2)
Akkor tér vissza true, ha a gyűjteményeknek nincs közös eleme
Fontos:

Ezen metódusok közül sok nem önmagában a ArrayList, HashSetés HashMaposztályokat használja, hanem a megfelelő interfészekkel: Collection<T>, List<T>, Map<K, V>.

Ez nem probléma: ha egy metódus elfogad egy -t List<T>, akkor mindig átadhat egy -t ArrayList<Integer>, de a hozzárendelés operátora nem működik az ellenkező irányba.


2. Gyűjtemények létrehozása, módosítása

Collections.addAll(Collection<T> colls, T e1, T e2, T e3, ...)módszer

A addAll()metódus hozzáadja a e1, e2, e3, ... elemeket a gyűjteményhez collsBármennyi elem átadható.

Kód Konzol kimenet
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)módszer

A fill()módszer a gyűjtemény összes elemét lecseréli listaz objelemre.

Kód Konzol kimenet
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)módszer

A metódus az elem másolatainak nCopies()listáját adja vissza . Vegye figyelembe, hogy a visszaadott lista megváltoztathatatlan, ami azt jelenti, hogy nem módosíthatja! Csak értékek olvasására használhatja:nobj

Kód Leírás
List<String> immutableList = Collections.nCopies(5, "Hello");

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

for(String s: list)
   System.out.println(s);
Hozzon létre egy megváltoztathatatlan listát 5 Hellokarakterláncból
Hozzon létre egy változót list, és töltse ki a lista értékeivel immutableList.

Konzol kimenet:
Hello
Hello
Hello
Hello
Hello

Collections.replaceAll (List<T> list, T oldValue, T newValue)módszer

A replaceAll()metódus a gyűjteményben szereplő összes elemet lecseréli list-re .oldValuenewValue

Kód Konzol kimenet
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)módszer

A copy()módszer a gyűjtemény összes elemét bemásolja srca gyűjteménybe dest.

Ha a destgyűjtés hosszabb ideig indul, mint a srcgyűjtés, akkor a destgyűjtemény többi eleme érintetlen marad.

Fontos:
A destgyűjteménynek legalább olyan hosszúnak kell lennie, mint a srcgyűjtemény (ellenkező esetben egy IndexOutOfBoundsExceptionlesz dobva).
Kód Konzol kimenet
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. Az elemek sorrendje

Collections.reverse(List<T> list)módszer

A reverse()metódus megfordítja az átadott lista elemeinek sorrendjét.

Kód Konzol kimenet
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)módszer

A sort()metódus az átadott listát növekvő sorrendbe rendezi.

Kód Konzol kimenet
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)módszer

A rotate()módszer ciklikusan, pozíciókkal előre tolja az átadott lista elemeit distance.

Kód Konzol kimenet
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)módszer

A shuffle()metódus véletlenszerűen megkeveri az átadott lista összes elemét. Az eredmény minden alkalommal más.

Kód Konzol kimenet
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. Elemek keresése a gyűjteményekben

Collections.min(Collection<T> colls)módszer

A min()metódus a gyűjtemény minimális elemét adja vissza.

Kód Konzol kimenet
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)módszer

A max()metódus a gyűjtemény maximális elemét adja vissza.

Kód Konzol kimenet
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)módszer

A frequency()módszer megszámolja, hogy az elem hányszor objfordul elő a collsgyűjteményben

Kód Konzol kimenet
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)módszer

A binarySearch()metódus megkeresi az objelemet a collsgyűjteményben. A talált elem indexét adja vissza. Negatív számot ad vissza, ha az elem nem található.

Fontos:
A metódus meghívása előtt binarySearch()a gyűjteményt rendezni kell (használd Collections.sort()).
Kód Konzol kimenet
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)módszer

A disjoint()metódus akkor tér vissza true, ha az átadott gyűjteményeknek nincs közös eleme.

Kód Konzol kimenet
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

Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION