Berbagi teknologi

Pengantar kelas Koleksi Java

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

milik Jawajava.util.CollectionsKelas menyediakan sekumpulan metode statis untuk memanipulasi atau mengembalikan koleksi (seperti daftar, kumpulan, dan peta).Collections Kelas adalah kelas utilitas yang dirancang untuk menyediakan algoritma dan operasi yang mudah pada koleksi.Berikut pasangannyaCollectionsPengenalan kelas dan metode yang umum digunakan.

Ringkasan metode umum

  • menyortirsort(List<T> list)sort(List<T> list, Comparator<? super T> c)
  • MenemukanbinarySearch(List<? extends Comparable<? super T>> list, T key)binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
  • balikreverse(List<?> list)
  • memutarrotate(List<?> list, int distance)
  • isianfill(List<? super T> list, T obj)
  • menyalincopy(List<? super T> dest, List<? extends T> src)
  • min dan maksmin(Collection<? extends T> coll)max(Collection<? extends T> coll)
  • sinkronisasi koleksisynchronizedList(List<T> list)synchronizedSet(Set<T> s)synchronizedMap(Map<K, V> m)
  • koleksi yang tidak dapat diubahunmodifiableList(List<? extends T> list)unmodifiableSet(Set<? extends T> s)unmodifiableMap(Map<? extends K, ? extends V> m)

menyortir
  • sort(List<T> list): Mengurutkan daftar dalam urutan menaik, elemen dalam daftar harus diterapkanComparableantarmuka.
  1. List<Integer> numbers = Arrays.asList(5, 3, 1, 4, 2);
  2. Collections.sort(numbers); // 排序后,numbers为 [1, 2, 3, 4, 5]
  • sort(List<T> list, Comparator<? super T> c): Mengurutkan daftar menurut pembanding yang ditentukan.
  1. List<String> names = Arrays.asList("Charlie", "Alice", "Bob");
  2. // 根据字符串长度排序
  3. Collections.sort(names, (s1, s2) -> s1.length() - s2.length());

Catatan: Collections.sort(names, (s1, s2) -&gt; s1.length() - s2.length()) (s1, s2) -&gt; s1.length() - s2.length() Ini adalah Ekspresi Lambda digunakan untuk mengimplementasikan metode perbandingan antarmuka Komparator.

Menemukan
  • binarySearch(List<? extends Comparable<? super T>> list, T key) : Gunakan pencarian biner untuk menemukan elemen dalam daftar dan mengembalikan indeks. Daftarnya harus diurutkan.
  1. List<Integer> sortedNumbers = Arrays.asList(1, 2, 3, 4, 5);
  2. int index = Collections.binarySearch(sortedNumbers, 3); // 返回索引 2
  • binarySearch(List<? extends T> list, T key, Comparator<? super T> c): Gunakan pencarian biner untuk menemukan elemen dalam daftar pembanding yang ditentukan.
  1. List<String> sortedNames = Arrays.asList("Alice", "Bob", "Charlie");
  2. int index = Collections.binarySearch(sortedNames, "Bob", String::compareTo); // 返回索引 1
nilai maksimum dan minimum
  • max(Collection<? extends T> coll): Mengembalikan elemen terbesar dalam koleksi.
  1. List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  2. int max = Collections.max(numbers); // 返回 5
  • min(Collection<? extends T> coll): Mengembalikan elemen terkecil dalam himpunan.
int min = Collections.min(numbers); // 返回 1
Urutan terbalik
  • reverse(List<?> list): Membalikkan elemen dalam daftar.
  1. List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  2. Collections.reverse(numbers); // 反转后,numbers为 [5, 4, 3, 2, 1]
pengacakan
  • shuffle(List<?> list): Mengacak daftar secara acak.
Collections.shuffle(numbers); // numbers的元素顺序将被随机打乱
isian
  • fill(List<? super T> list, T obj): Ganti semua elemen dalam daftar dengan elemen yang ditentukan.
  1. List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
  2. Collections.fill(list, "z"); // list 现在是 ["z", "z", "z"]
menyalin
  • copy(List<? super T> dest, List<? extends T> src): Menyalin semua elemen dalam daftar sumber ke daftar target.
  1. List<String> dest = Arrays.asList(new String[3]);
  2. List<String> src = Arrays.asList("a", "b", "c");
  3. Collections.copy(dest, src); // dest 现在是 ["a", "b", "c"]
koleksi yang tidak dapat diubah
  • unmodifiableList(List<? extends T> list): Mengembalikan tampilan yang tidak dapat dimodifikasi.
  1. List<String> list = Arrays.asList("a", "b", "c");
  2. List<String> unmodifiableList = Collections.unmodifiableList(list);
  3. // unmodifiableList.add("d"); // 会抛出 UnsupportedOperationException
sinkronisasi koleksi
  • synchronizedList(List<T> list): Mengembalikan daftar thread-safe.
  1. List<String> list = new ArrayList<>();
  2. List<String> syncList = Collections.synchronizedList(list);

Contoh ringkasan

Berikut adalah contoh komprehensif yang ditampilkanCollectionsBeberapa metode kelas yang umum:

  1. import java.util.*;
  2. public class CollectionsExample {
  3. public static void main(String[] args) {
  4. List<Integer> numbers = new ArrayList<>(Arrays.asList(5, 3, 1, 4, 2));
  5. // 排序
  6. Collections.sort(numbers);
  7. System.out.println("排序后: " + numbers);
  8. // 反转
  9. Collections.reverse(numbers);
  10. System.out.println("反转后: " + numbers);
  11. // 随机打乱
  12. Collections.shuffle(numbers);
  13. System.out.println("随机打乱后: " + numbers);
  14. // 查找最大和最小值
  15. int max = Collections.max(numbers);
  16. int min = Collections.min(numbers);
  17. System.out.println("最大值: " + max + ", 最小值: " + min);
  18. // 二分搜索
  19. Collections.sort(numbers);
  20. int index = Collections.binarySearch(numbers, 3);
  21. System.out.println("元素 3 的索引: " + index);
  22. // 同步集合
  23. List<String> syncList = Collections.synchronizedList(new ArrayList<>());
  24. syncList.add("a");
  25. syncList.add("b");
  26. System.out.println("同步集合: " + syncList);
  27. }
  28. }

dengan menggunakanCollectionsMetode yang disediakan oleh kelas ini dapat dengan mudah melakukan berbagai operasi pada koleksi, meningkatkan keterbacaan dan pemeliharaan kode.

mengacu pada:

Koleksi (Java SE 17 & JDK 17)