Collections的实用方法

本文介绍了Java集合框架Collections类中的一些实用方法,包括二分搜索binarySearch()、元素填充addAll()、元素复制copy()、判断是否互斥disjoint()及频率统计frequency()等,并通过示例代码展示了这些方法的应用。

    无聊,翻翻文档,发现Collections中有很多有用而且以前我不知道的方法,晒晒~

  • binarySearch()二分搜索查找指定元素,与Arrays同,用之前要先排序。没有返回-1,有返回位置。
  • addAll()设定元素,个人感觉比fill()方法要好用,因为fill()是替换填充,何为替换填充,就是你得在先确保有值的时候才能填充,而addAll()第一个参数是Collection对象,第二个是一个动态的参数列表-->用来添加想要填充的元素。
  • checked系列,现在还没用过,不解...
  • copy()这个个人感觉也没有Arrays的copyOf方便,因为得确保目标数组的长度大于等于源数组才能复制,个人编了些代码,可以直接体共通:
  •  
  • disjoint()两个Collection对象有相同元素的时候返回false,没有则返回true,存在null的也返回true。
  • 最后一个frequency(Collection c,Object o)返回 Collection对象中存在指定对象的元素数。有一个返回1,俩返回2......

goodbye~

Java 的 `java.util.Collections` 类是一个实用工具类,提供了一组静态方法,用于操作或返回集合(如列表、集合映射),为集合提供便捷的算法操作。以下是对其常用方法的讲解: ### 排序 - `sort(List<T> list)`:对指定列表进行升序排序,列表中的元素必须实现 `Comparable` 接口。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class SortExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(3); list.add(1); list.add(2); Collections.sort(list); System.out.println(list); // 输出: [1, 2, 3] } } ``` - `sort(List<T> list, Comparator<? super T> c)`:使用指定的比较器对列表进行排序。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class SortWithComparatorExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("cherry"); Collections.sort(list, Comparator.reverseOrder()); System.out.println(list); // 输出: [cherry, banana, apple] } } ``` ### 查找 - `binarySearch(List<? extends Comparable<? super T>> list, T key)`:使用二分查找算法在有序列表中查找指定元素,列表中的元素必须实现 `Comparable` 接口。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class BinarySearchExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); int index = Collections.binarySearch(list, 2); System.out.println(index); // 输出: 1 } } ``` - `binarySearch(List<? extends T> list, T key, Comparator<? super T> c)`:使用指定的比较器在有序列表中查找指定元素。 ### 反转 - `reverse(List<?> list)`:反转指定列表中元素的顺序。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ReverseExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); Collections.reverse(list); System.out.println(list); // 输出: [3, 2, 1] } } ``` ### 旋转 - `rotate(List<?> list, int distance)`:将列表中的元素旋转指定的距离。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class RotateExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); Collections.rotate(list, 1); System.out.println(list); // 输出: [3, 1, 2] } } ``` ### 填充 - `fill(List<? super T> list, T obj)`:用指定的元素填充指定的列表。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class FillExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); Collections.fill(list, 0); System.out.println(list); // 输出: [0, 0, 0] } } ``` ### 复制 - `copy(List<? super T> dest, List<? extends T> src)`:将一个列表中的元素复制到另一个列表中。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CopyExample { public static void main(String[] args) { List<Integer> src = new ArrayList<>(); src.add(1); src.add(2); src.add(3); List<Integer> dest = new ArrayList<>(src.size()); for (int i = 0; i < src.size(); i++) { dest.add(0); } Collections.copy(dest, src); System.out.println(dest); // 输出: [1, 2, 3] } } ``` ### 最小最大 - `min(Collection<? extends T> coll)`:返回指定集合中的最小元素,集合中的元素必须实现 `Comparable` 接口。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class MinExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(3); list.add(1); list.add(2); int min = Collections.min(list); System.out.println(min); // 输出: 1 } } ``` - `max(Collection<? extends T> coll)`:返回指定集合中的最大元素,集合中的元素必须实现 `Comparable` 接口。 ### 同步集合 - `synchronizedList(List<T> list)`:返回指定列表的同步(线程安全)视图。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class SynchronizedListExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); List<Integer> syncList = Collections.synchronizedList(list); } } ``` - `synchronizedSet(Set<T> s)`:返回指定集合的同步(线程安全)视图。 - `synchronizedMap(Map<K, V> m)`:返回指定映射的同步(线程安全)视图。 ### 不可变集合 - `unmodifiableList(List<? extends T> list)`:返回指定列表的不可修改视图。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class UnmodifiableListExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); List<Integer> unmodifiableList = Collections.unmodifiableList(list); try { unmodifiableList.add(2); // 会抛出 UnsupportedOperationException } catch (UnsupportedOperationException e) { System.out.println("不支持修改操作"); } } } ``` - `unmodifiableSet(Set<? extends T> s)`:返回指定集合的不可修改视图。 - `unmodifiableMap(Map<? extends K, ? extends V> m)`:返回指定映射的不可修改视图。 ### 频率统计 - `frequency(Collection<?> c, Object o)`:返回指定元素在指定集合中出现的次数。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class FrequencyExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(2); int frequency = Collections.frequency(list, 2); System.out.println(frequency); // 输出: 2 } } ``` ### 添加元素 - `addAll(Collection<? super T> c, T... elements)`:将所有指定元素添加到指定集合中。 ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class AddAllExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); Collections.addAll(list, "a", "b", "c"); System.out.println(list); // 输出: [a, b, c] } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值