기술나눔

Java 컬렉션 클래스 소개

2024-07-12

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

자바의java.util.Collections클래스는 컬렉션(예: 목록, 세트, ​​맵)을 조작하거나 반환하기 위한 정적 메서드 세트를 제공합니다.Collections 클래스는 컬렉션에 대한 편리한 알고리즘과 작업을 제공하도록 설계된 유틸리티 클래스입니다.다음은 쌍이다.Collections클래스와 일반적으로 사용되는 메서드를 소개합니다.

일반적인 방법 요약

  • 종류sort(List<T> list)sort(List<T> list, Comparator<? super T> c)
  • 찾다binarySearch(List<? extends Comparable<? super T>> list, T key)binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
  • 뒤집다reverse(List<?> list)
  • 회전하다rotate(List<?> list, int distance)
  • 충전재fill(List<? super T> list, T obj)
  • 복사copy(List<? super T> dest, List<? extends T> src)
  • 최소 및 최대min(Collection<? extends T> coll)max(Collection<? extends T> coll)
  • 동기화 컬렉션synchronizedList(List<T> list)synchronizedSet(Set<T> s)synchronizedMap(Map<K, V> m)
  • 불변 컬렉션unmodifiableList(List<? extends T> list)unmodifiableSet(Set<? extends T> s)unmodifiableMap(Map<? extends K, ? extends V> m)

종류
  • sort(List<T> list): 목록을 오름차순으로 정렬합니다. 목록의 요소는 다음을 구현해야 합니다.Comparable상호 작용.
  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): 지정된 비교기에 따라 목록을 정렬합니다.
  1. List<String> names = Arrays.asList("Charlie", "Alice", "Bob");
  2. // 根据字符串长度排序
  3. Collections.sort(names, (s1, s2) -> s1.length() - s2.length());

참고: Collections.sort(names, (s1, s2) -&gt; s1.length() - s2.length()) (s1, s2) -&gt; s1.length() - s2.length() 이것은 람다 표현식입니다. Comparator 인터페이스의 비교 메소드를 구현하는 데 사용됩니다.

찾다
  • binarySearch(List<? extends Comparable<? super T>> list, T key) : 이진 검색을 사용하여 목록에서 요소를 찾고 인덱스를 반환합니다. 목록을 정렬해야 합니다.
  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): 이진 검색을 사용하여 지정된 비교기 목록에서 요소를 찾습니다.
  1. List<String> sortedNames = Arrays.asList("Alice", "Bob", "Charlie");
  2. int index = Collections.binarySearch(sortedNames, "Bob", String::compareTo); // 返回索引 1
최대값과 최소값
  • max(Collection<? extends T> coll): 컬렉션에서 가장 큰 요소를 반환합니다.
  1. List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  2. int max = Collections.max(numbers); // 返回 5
  • min(Collection<? extends T> coll): 집합에서 가장 작은 요소를 반환합니다.
int min = Collections.min(numbers); // 返回 1
역순으로
  • reverse(List<?> list): 목록의 요소를 반대로 바꿉니다.
  1. List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  2. Collections.reverse(numbers); // 反转后,numbers为 [5, 4, 3, 2, 1]
무작위화
  • shuffle(List<?> list): 목록을 무작위로 섞습니다.
Collections.shuffle(numbers); // numbers的元素顺序将被随机打乱
충전재
  • fill(List<? super T> list, T obj): 목록의 모든 요소를 ​​지정된 요소로 바꿉니다.
  1. List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
  2. Collections.fill(list, "z"); // list 现在是 ["z", "z", "z"]
복사
  • copy(List<? super T> dest, List<? extends T> src): 소스 목록의 모든 요소를 ​​대상 목록에 복사합니다.
  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"]
불변 컬렉션
  • unmodifiableList(List<? extends T> list): 수정 불가능한 뷰를 반환합니다.
  1. List<String> list = Arrays.asList("a", "b", "c");
  2. List<String> unmodifiableList = Collections.unmodifiableList(list);
  3. // unmodifiableList.add("d"); // 会抛出 UnsupportedOperationException
동기화 컬렉션
  • synchronizedList(List<T> list): 스레드로부터 안전한 목록을 반환합니다.
  1. List<String> list = new ArrayList<>();
  2. List<String> syncList = Collections.synchronizedList(list);

예시 요약

다음은 포괄적인 예입니다.Collections몇 가지 일반적인 클래스 메서드:

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

사용하여Collections클래스에서 제공하는 이러한 메서드는 컬렉션에 대한 다양한 작업을 쉽게 수행할 수 있으므로 코드의 가독성과 유지 관리성이 향상됩니다.

인용하다:

컬렉션(Java SE 17 및 JDK 17)