CodeGym /Kursus Java /Modul 1 /Koleksi — kelas pembantu

Koleksi — kelas pembantu

Modul 1
Tahap , pelajaran
Tersedia

1. Senarai kaedah

Ingat bahawa pencipta Java menulis seluruh kelas pembantu yang dipanggil Arraysuntuk kemudahan kita apabila bekerja dengan tatasusunan?

Mereka melakukan perkara yang sama untuk koleksi. Java mempunyai java.util.Collectionskelas yang mempunyai banyak kaedah yang berguna untuk bekerja dengan koleksi. Berikut adalah yang paling menarik:

Kaedah Penerangan
addAll(colls, e1, e2, e3, ...)
Menambah elemen e1, e2, e3, ... pada collskoleksi
fill(list, obj)
Menggantikan semua elemen dalam senarai yang diluluskan denganobj
nCopies(n, obj)
Mengembalikan senarai salinan nobjekobj
replaceAll(list, oldVal, newVal)
Menggantikan semua kejadian oldValdengan newValdalam listsenarai
copy(dest, src)
Menyalin semua elemen daripada srcsenarai ke destsenarai
reverse(list)
Membalikkan senarai.
sort(list)
Isih senarai dalam tertib menaik
rotate(list, n)
Secara kitaran menganjakkan elemen senarai listdengan nelemen
shuffle(list)
Kocok secara rawak elemen dalam senarai
min(colls)
Mencari elemen minimum dalam collskoleksi
max(colls)
Mencari elemen maksimum dalam collskoleksi
frequency(colls, obj)
Menentukan berapa kali objelemen itu berlaku dalam collskoleksi
binarySearch(list, key)
Mencari keydalam senarai diisih dan mengembalikan indeks yang sepadan.
disjoint(colls1, colls2)
Mengembalikan truejika koleksi tidak mempunyai unsur yang sama
Penting:

Kebanyakan kaedah ini tidak menggunakan ArrayList, HashSetdan HashMapkelas per se, tetapi dengan antara muka yang sepadan: Collection<T>, List<T>, Map<K, V>.

Ini bukan masalah: jika kaedah menerima a List<T>, anda sentiasa boleh memberikannya an ArrayList<Integer>, tetapi pengendali tugasan tidak berfungsi dalam arah yang bertentangan.


2. Mencipta dan mengubah suai koleksi

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

Kaedah addAll()menambah elemen e1, e2, e3, ... ke collskoleksi Sebarang bilangan elemen boleh dihantar.

Kod Output konsol
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)kaedah

Kaedah fill()menggantikan semua elemen koleksi listdengan objelemen.

Kod Output konsol
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)kaedah

Kaedah ini nCopies()mengembalikan senarai nsalinan elemen obj. Ambil perhatian bahawa senarai yang dikembalikan tidak boleh diubah, yang bermaksud anda tidak boleh mengubahnya! Anda hanya boleh menggunakannya untuk membaca nilai:

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

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

for(String s: list)
   System.out.println(s);
Cipta senarai tidak boleh ubah 5 Hellorentetan
Cipta boleh ubah listdan isi dengan nilai daripada immutableListsenarai.

Output konsol:
Hello
Hello
Hello
Hello
Hello

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

Kaedah replaceAll()menggantikan semua elemen dalam listkoleksi bersamaan oldValuedengan newValue.

Kod Output konsol
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)kaedah

Kaedah copy()menyalin semua elemen koleksi srcke dalam destkoleksi.

Jika destkoleksi bermula lebih lama daripada srckoleksi, maka elemen koleksi yang tinggal destakan kekal utuh.

Penting:
Koleksi destmestilah sekurang-kurangnya sepanjang srckoleksi (jika tidak, an IndexOutOfBoundsExceptionakan dibuang).
Kod Output konsol
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. Susunan unsur

Collections.reverse(List<T> list)kaedah

Kaedah reverse()membalikkan susunan elemen senarai yang diluluskan.

Kod Output konsol
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)kaedah

Kaedah sort()mengisih senarai yang diluluskan dalam tertib menaik.

Kod Output konsol
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)kaedah

Kaedah ini rotate()secara kitaran mengalihkan elemen senarai yang diluluskan mengikut distancekedudukan ke hadapan.

Kod Output konsol
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)kaedah

Kaedah ini shuffle()secara rawak mengocok semua elemen senarai yang diluluskan. Hasilnya berbeza setiap masa.

Kod Output konsol
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. Mencari elemen dalam koleksi

Collections.min(Collection<T> colls)kaedah

Kaedah min()mengembalikan elemen minimum dalam koleksi.

Kod Output konsol
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)kaedah

Kaedah max()mengembalikan elemen maksimum dalam koleksi.

Kod Output konsol
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)kaedah

Kaedah frequency()mengira bilangan kali objelemen berlaku dalam collskoleksi

Kod Output konsol
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)kaedah

Kaedah binarySearch()mencari objelemen dalam collskoleksi. Mengembalikan indeks elemen yang ditemui. Mengembalikan nombor negatif jika elemen tidak ditemui.

Penting:
Sebelum memanggil binarySearch()kaedah, koleksi mesti diisih (gunakan Collections.sort()).
Kod Output konsol
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)kaedah

Kaedah disjoint()kembali truejika koleksi yang diluluskan tidak mempunyai sebarang unsur yang sama.

Kod Output konsol
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

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