Technologieaustausch

Einführung in die Java Collections-Klasse

2024-07-12

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

Javasjava.util.CollectionsKlassen bieten eine Reihe statischer Methoden zum Bearbeiten oder Zurückgeben von Sammlungen (z. B. Listen, Mengen und Karten).Collections Class ist eine Dienstprogrammklasse, die dazu dient, praktische Algorithmen und Operationen für Sammlungen bereitzustellen.Das Folgende ist das PaarCollectionsEine Einführung in Klassen und ihre häufig verwendeten Methoden.

Zusammenfassung gängiger Methoden

  • Sortierensort(List<T> list)sort(List<T> list, Comparator<? super T> c)
  • FindenbinarySearch(List<? extends Comparable<? super T>> list, T key)binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
  • umkehrenreverse(List<?> list)
  • drehenrotate(List<?> list, int distance)
  • Füllungfill(List<? super T> list, T obj)
  • Kopierencopy(List<? super T> dest, List<? extends T> src)
  • min. und maxmin(Collection<? extends T> coll)max(Collection<? extends T> coll)
  • Sammlung synchronisierensynchronizedList(List<T> list)synchronizedSet(Set<T> s)synchronizedMap(Map<K, V> m)
  • unveränderliche SammlungunmodifiableList(List<? extends T> list)unmodifiableSet(Set<? extends T> s)unmodifiableMap(Map<? extends K, ? extends V> m)

Sortieren
  • sort(List<T> list): Sortieren Sie die Liste in aufsteigender Reihenfolge, die Elemente in der Liste müssen implementiert seinComparableSchnittstelle.
  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): Sortiert die Liste nach dem angegebenen Komparator.
  1. List<String> names = Arrays.asList("Charlie", "Alice", "Bob");
  2. // 根据字符串长度排序
  3. Collections.sort(names, (s1, s2) -> s1.length() - s2.length());

Hinweis: Collections.sort(names, (s1, s2) -&gt; s1.length() - s2.length()) (s1, s2) -&gt; s1.length() - s2.length() Dies ist ein Lambda-Ausdruck Wird verwendet, um die Vergleichsmethode der Comparator-Schnittstelle zu implementieren.

Finden
  • binarySearch(List<? extends Comparable<? super T>> list, T key) : Verwenden Sie die binäre Suche, um ein Element in der Liste zu finden und den Index zurückzugeben. Die Liste muss sortiert sein.
  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): Verwenden Sie die binäre Suche, um ein Element in der Liste des angegebenen Komparators zu finden.
  1. List<String> sortedNames = Arrays.asList("Alice", "Bob", "Charlie");
  2. int index = Collections.binarySearch(sortedNames, "Bob", String::compareTo); // 返回索引 1
Maximal- und Minimalwerte
  • max(Collection<? extends T> coll): Gibt das größte Element in der Sammlung zurück.
  1. List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  2. int max = Collections.max(numbers); // 返回 5
  • min(Collection<? extends T> coll): Gibt das kleinste Element in der Menge zurück.
int min = Collections.min(numbers); // 返回 1
Umgekehrte Reihenfolge
  • reverse(List<?> list): Elemente in der Liste umkehren.
  1. List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  2. Collections.reverse(numbers); // 反转后,numbers为 [5, 4, 3, 2, 1]
Randomisierung
  • shuffle(List<?> list): Liste nach dem Zufallsprinzip mischen.
Collections.shuffle(numbers); // numbers的元素顺序将被随机打乱
Füllung
  • fill(List<? super T> list, T obj): Ersetzen Sie alle Elemente in der Liste durch das angegebene Element.
  1. List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
  2. Collections.fill(list, "z"); // list 现在是 ["z", "z", "z"]
Kopieren
  • copy(List<? super T> dest, List<? extends T> src): Kopiert alle Elemente in der Quellliste in die Zielliste.
  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"]
unveränderliche Sammlung
  • unmodifiableList(List<? extends T> list): Gibt eine nicht änderbare Ansicht zurück.
  1. List<String> list = Arrays.asList("a", "b", "c");
  2. List<String> unmodifiableList = Collections.unmodifiableList(list);
  3. // unmodifiableList.add("d"); // 会抛出 UnsupportedOperationException
Sammlung synchronisieren
  • synchronizedList(List<T> list): Gibt eine threadsichere Liste zurück.
  1. List<String> list = new ArrayList<>();
  2. List<String> syncList = Collections.synchronizedList(list);

Beispielzusammenfassung

Hier ist ein umfassendes BeispielCollectionsEinige gängige Klassenmethoden:

  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. }

durch die NutzungCollectionsDiese von der Klasse bereitgestellten Methoden können problemlos verschiedene Vorgänge an der Sammlung ausführen und so die Lesbarkeit und Wartbarkeit des Codes verbessern.

beziehen auf:

Sammlungen (Java SE 17 und JDK 17)