CodeGym /Java kurs /Modul 1 /Samlingar — en hjälparklass

Samlingar — en hjälparklass

Modul 1
Nivå , Lektion
Tillgängliga

1. Lista över metoder

Kommer du ihåg att Javas skapare skrev en hel hjälparklass för att Arraysunderlätta för oss när vi arbetar med arrayer?

De gjorde samma sak för samlingar. Java har en java.util.Collectionsklass som har många metoder som är användbara för att arbeta med samlingar. Här är bara de mest intressanta:

Metoder Beskrivning
addAll(colls, e1, e2, e3, ...)
Lägger till elementen e1, e2, e3, ... till collssamlingen
fill(list, obj)
Ersätter alla element i den godkända listan medobj
nCopies(n, obj)
Returnerar en lista med nkopior av objobjektet
replaceAll(list, oldVal, newVal)
Ersätter alla instanser av oldValmed newVali listlistan
copy(dest, src)
Kopierar alla element från srclistan till destlistan
reverse(list)
Vänder om listan.
sort(list)
Sorterar listan i stigande ordning
rotate(list, n)
Skiftar cykliskt elementen i listlistan efter nelement
shuffle(list)
Blandar slumpmässigt elementen i listan
min(colls)
Hittar minimielementet i collssamlingen
max(colls)
Hittar det maximala elementet i collssamlingen
frequency(colls, obj)
Bestämmer hur många gånger objelementet förekommer i collssamlingen
binarySearch(list, key)
Söker efter keyi en sorterad lista och returnerar motsvarande index.
disjoint(colls1, colls2)
Returnerar trueom samlingarna inte har några gemensamma element
Viktig:

Många av dessa metoder använder inte klasserna ArrayList, HashSetoch HashMapi sig, utan med motsvarande gränssnitt: Collection<T>, List<T>, Map<K, V>.

Det här är inget problem: om en metod accepterar ett List<T>, kan du alltid skicka det till ett , ArrayList<Integer>men uppdragsoperatören fungerar inte i motsatt riktning.


2. Skapa och ändra samlingar

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

Metoden addAll()lägger till elementen e1, e2, e3, ... till collssamlingen Valfritt antal element kan skickas.

Koda Konsolutgång
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)metod

Metoden fill()ersätter alla element i samlingen listmed objelementet.

Koda Konsolutgång
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)metod

Metoden nCopies()returnerar en lista med nkopior av objelementet. Observera att den returnerade listan är oföränderlig, vilket innebär att du inte kan ändra den! Du kan bara använda den för att läsa värden:

Koda Beskrivning
List<String> immutableList = Collections.nCopies(5, "Hello");

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

for(String s: list)
   System.out.println(s);
Skapa en oföränderlig lista med 5 Hellosträngar
Skapa en föränderlig listoch fyll den med värdena från immutableListlistan.

Konsolutgång:
Hello
Hello
Hello
Hello
Hello

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

Metoden replaceAll()ersätter alla element i samlingen listlika oldValuemed newValue.

Koda Konsolutgång
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)metod

Metoden copy()kopierar alla delar av samlingen srctill destsamlingen.

Om destsamlingen börjar längre än srcsamlingen kommer de återstående delarna av destsamlingen att förbli intakta.

Viktig:
Samlingen destmåste vara minst lika lång som srcsamlingen (annars IndexOutOfBoundsExceptionkastas ett testamente).
Koda Konsolutgång
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. Ordning av elementen

Collections.reverse(List<T> list)metod

Metoden reverse()vänder ordningen på elementen i den godkända listan.

Koda Konsolutgång
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)metod

Metoden sort()sorterar den godkända listan i stigande ordning.

Koda Konsolutgång
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)metod

Metoden rotate()förskjuter cykliskt elementen i den godkända listan med distancepositioner framåt.

Koda Konsolutgång
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)metod

Metoden shuffle()blandar slumpmässigt alla element i den godkända listan. Resultatet är olika varje gång.

Koda Konsolutgång
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. Hitta element i samlingar

Collections.min(Collection<T> colls)metod

Metoden min()returnerar minimielementet i samlingen.

Koda Konsolutgång
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)metod

Metoden max()returnerar det maximala elementet i samlingen.

Koda Konsolutgång
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)metod

Metoden frequency()räknar antalet gånger objelementet förekommer i collssamlingen

Koda Konsolutgång
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)metod

Metoden binarySearch()söker efter objelementet i collssamlingen. Returnerar indexet för det hittade elementet. Returnerar ett negativt tal om elementet inte hittas.

Viktig:
Innan binarySearch()metoden anropas måste samlingen sorteras (använd ) Collections.sort().
Koda Konsolutgång
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)metod

Metoden disjoint()återkommer trueom de godkända samlingarna inte har några gemensamma element.

Koda Konsolutgång
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

Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION