目录
前言
Java
集合工具类分为两种,一种是 jdk
自带的,一种是第三方提供的(要去他们官网下 jar
包,然后导入使用)
jdk
自带的 Collections
集合工具类常用方法
该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象实现同步控制等方法。这个类不需要创建对象,内部提供的都是静态方法
- 将所有指定的元素添加到指定的集合
addAll(Collection<? super T> c, T... elements)
- 对指定列表进行排序
sort(List<T> list) // 根据其元素的 natural ordering 对指定的列表进行排序
sort(List<T> list, Comparator<? super T> c) // 根据指定的比较器引起的顺序对指定的列表进行排序
- 返回给定集合的最大元素
max(Collection<? extends T> coll) // 根据其元素的 自然顺序返回给定集合的最大元素
max(Collection<? extends T> coll, Comparator<? super T> comp) // 根据指定的比较器引发的顺序返回给定集合的最大元素
- 返回给定集合的最小元素
min(Collection<? extends T> coll) // 根据其元素的 自然顺序返回给定集合的最小元素
min(Collection<? extends T> coll, Comparator<? super T> comp) // 根据指定的比较器引发的顺序返回给定集合的最小元素
- 在指定列表的指定位置处交换元素
swap(List<?> list, int i, int j) // 交换指定列表中指定位置的元素
- 使用指定元素替换指定列表中的所有元素,也就是填充列表,也可以叫初始化
fill(List<? super T> list, T obj) // 用指定的元素代替指定列表的所有元素
- 返回指定集合中与指定对象相等的元素数
frequency(Collection<?> c, Object o) // 返回指定集合中与指定对象相等的元素数
- 如果两个指定的集合没有共同的元素,则返回
true
disjoint(Collection<?> c1, Collection<?> c2) // 如果两个指定的集合没有共同的元素,则返回 true
- 将列表中一个指定值的所有出现替换为另一个
replaceAll(List<T> list, T oldVal, T newVal) // 将列表中一个指定值的所有出现替换为另一个
- 将所有元素从一个列表复制到另一个列表中
copy(List<? super T> dest, List<? extends T> src) // 将所有元素从一个列表复制到另一个列表中
- 返回由指定
list
支持的同步(线程安全)的list
synchronizedList(List<T> list) // 返回由指定列表支持的同步(线程安全)list
- 返回由指定
Map
支持的同步(线程安全)Map
synchronizedMap(Map<K,V> m) // 返回由指定 Map 支持的同步(线程安全)Map
- 返回由指定
Set
集合支持的同步(线程安全)Set
synchronizedSet(Set<T> s) // 返回由指定 Set 集合支持的同步(线程安全)Set
jdk
的 Arrays
集合工具类常用方法
- 返回指定数组的内容的字符串表示形式
toString(Object[] a) // 返回指定数组的内容的字符串表示形式
- 根据指定数组的内容返回哈希码
hashCode(Object[] a)// 根据指定数组的内容返回哈希码
- 将数组转化成
list
集合形式
asList(T... a) // 将数组转化成 `list` 集合
这个方法会返回一个 ArrayList
类型的对象, 这个 ArrayList
类并非 java.util.ArrayList
类,而是 Arrays
类的静态内部类
- 对数组进行排序
sort(Object[] a) // 对指定对象升序排列的阵列,根据natural ordering的元素
sort(Object[] a, int fromIndex, int toIndex) // 对指定对象升序排列的数组的指定范围内,根据natural ordering的元素
- 将数组里的所有元素都替换为指定值
fill(Object[] a, int fromIndex, int toIndex, Object val) //将指定的对象引用分配给指定的对象数组的指定范围的每个元素
fill(Object[] a, Object val) // 将指定的对象引用分配给指定的对象数组的每个元素
- 复制指定的数组
copyOf(T[] original, int newLength) // 复制指定的数组
- 将指定数组的指定范围复制到新数组中
copyOfRange(T[] original, int from, int to) // 将指定数组的指定范围复制到新数组中
- 判断两个数组是否相同
equals(Object[] a, Object[] a2) // 如果两个指定的对象数组彼此 相等 ,则返回 true
Apache
提供的集合工具类
平时最常用集合工具类有:CollectionUtils,ListUtils,SetUtils,MapUtils,ArrayUtils
对于使用 Maven
构建的项目来说,需要导入依赖
<!--使用 CollectionUtils,ListUtils,SetUtils,MapUtils 工具类时需要导入-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<!--使用 ArrayUtils 工具类时需要导入-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
Spring
提供的集合工具类 CollectionUtils
导入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
主要方法
public abstract class CollectionUtils {
public static boolean isEmpty(@Nullable Collection<?> collection) {
return (collection == null || collection.isEmpty());
}
public static boolean isEmpty(@Nullable Map<?, ?> map) {
return (map == null || map.isEmpty());
}
public static List arrayToList(@Nullable Object source) {
return Arrays.asList(ObjectUtils.toObjectArray(source));
}
public static boolean containsAny(Collection<?> source, Collection<?> candidates) {
if (isEmpty(source) || isEmpty(candidates)) {
return false;
}
for (Object candidate : candidates) {
if (source.contains(candidate)) {
return true;
}
}
return false;
}
}