Partage de technologie

Introduction à la classe Java Collections

2024-07-12

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

Javajava.util.CollectionsLes classes fournissent un ensemble de méthodes statiques pour manipuler ou renvoyer des collections (telles que des listes, des ensembles et des cartes).Collections Class est une classe utilitaire conçue pour fournir des algorithmes et des opérations pratiques sur les collections.Voici la paireCollectionsUne introduction aux cours et à leurs méthodes couramment utilisées.

Résumé des méthodes courantes

  • triersort(List<T> list)sort(List<T> list, Comparator<? super T> c)
  • TrouverbinarySearch(List<? extends Comparable<? super T>> list, T key)binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
  • inversereverse(List<?> list)
  • tournerrotate(List<?> list, int distance)
  • remplissagefill(List<? super T> list, T obj)
  • copiecopy(List<? super T> dest, List<? extends T> src)
  • min et maxmin(Collection<? extends T> coll)max(Collection<? extends T> coll)
  • synchroniser la collectionsynchronizedList(List<T> list)synchronizedSet(Set<T> s)synchronizedMap(Map<K, V> m)
  • collection immuableunmodifiableList(List<? extends T> list)unmodifiableSet(Set<? extends T> s)unmodifiableMap(Map<? extends K, ? extends V> m)

trier
  • sort(List<T> list): Trier la liste par ordre croissant, les éléments de la liste doivent implémenterComparableinterface.
  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): Trie la liste en fonction du comparateur spécifié.
  1. List<String> names = Arrays.asList("Charlie", "Alice", "Bob");
  2. // 根据字符串长度排序
  3. Collections.sort(names, (s1, s2) -> s1.length() - s2.length());

Remarque : Collections.sort(names, (s1, s2) -&gt; s1.length() - s2.length()) (s1, s2) -&gt; s1.length() - s2.length() Il s'agit d'une expression Lambda utilisé pour implémenter la méthode de comparaison de l'interface Comparator.

Trouver
  • binarySearch(List<? extends Comparable<? super T>> list, T key) : Utilisez la recherche binaire pour trouver un élément dans la liste et renvoyer l'index. La liste doit être triée.
  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): Utilisez la recherche binaire pour trouver un élément dans la liste du comparateur spécifié.
  1. List<String> sortedNames = Arrays.asList("Alice", "Bob", "Charlie");
  2. int index = Collections.binarySearch(sortedNames, "Bob", String::compareTo); // 返回索引 1
valeurs maximales et minimales
  • max(Collection<? extends T> coll): Renvoie le plus grand élément de la collection.
  1. List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  2. int max = Collections.max(numbers); // 返回 5
  • min(Collection<? extends T> coll): Renvoie le plus petit élément de l'ensemble.
int min = Collections.min(numbers); // 返回 1
Ordre inverse
  • reverse(List<?> list): Inverse les éléments de la liste.
  1. List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  2. Collections.reverse(numbers); // 反转后,numbers为 [5, 4, 3, 2, 1]
randomisation
  • shuffle(List<?> list): Mélangez la liste au hasard.
Collections.shuffle(numbers); // numbers的元素顺序将被随机打乱
remplissage
  • fill(List<? super T> list, T obj): Remplacez tous les éléments de la liste par l'élément spécifié.
  1. List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
  2. Collections.fill(list, "z"); // list 现在是 ["z", "z", "z"]
copie
  • copy(List<? super T> dest, List<? extends T> src): Copie tous les éléments de la liste source vers la liste cible.
  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"]
collection immuable
  • unmodifiableList(List<? extends T> list): Renvoie une vue non modifiable.
  1. List<String> list = Arrays.asList("a", "b", "c");
  2. List<String> unmodifiableList = Collections.unmodifiableList(list);
  3. // unmodifiableList.add("d"); // 会抛出 UnsupportedOperationException
synchroniser la collection
  • synchronizedList(List<T> list): renvoie une liste thread-safe.
  1. List<String> list = new ArrayList<>();
  2. List<String> syncList = Collections.synchronizedList(list);

Exemple de résumé

Voici un exemple complet montrantCollectionsQuelques méthodes courantes de cours :

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

en utilisantCollectionsCes méthodes fournies par la classe peuvent facilement effectuer diverses opérations sur la collection, améliorant ainsi la lisibilité et la maintenabilité du code.

faire référence à:

Collections (Java SE 17 et JDK 17)