常用集合工具类使用

一:Java自己的集合工具类Collections
排序操作
//将所有指定元素添加到指定的collection中
static <T>boolean addAll(Collection <? super T>c,T... elements)
//反转指定List集合中元素的顺序
static void reverse(List list)
//对List集合中的元素进行随机排序(模拟玩扑克中的“洗牌”)
static void shuffle(List list)
//根据元素的自然顺序对List集合中的元素进行排序
static void sort(List list)
//将指定List集合中i处元素和j处元素进行交换
static void swap(List list,int i,int j)
替换查找
//使用二分法搜索指定对象在List集合中的索引,查找的 List集合中的元素必须是有序的
static int binaryScarch ( List list,Object key)
//返回给定集合中最大的元素
static Object max(Collection col)
//返回给定集合中最小的元素
static Object min (Collection col)
//用一个新的newVal替换List集合中所有的旧值oldVal
static boolean replaccAll (List list,Object oldVal,Object newVal)
checked 检查集合
//返回类型检查的集合,在对类型进行set 或者add的时候会做类型检查
static <E> List<E> checkedList(List<E> list, Class<E> type)
empty 返回空的集合
//返回一个空的List集合
static final <T> List<T> emptyList()
//这样用的好处就是1.不用处理返回null的问题。2.不用新生成空的list,避免占用内存,因为返回的空list,整个应用共同用一个。
unmodifiableList 不可变集合
//传入的集合返回后不可以改变
static <T> List<T> unmodifiableList(List<? extends T> list)
//传入的集合不可以改变。因为包装类屏蔽了集合的方法,抛出了异常。
//注意:只是不可以修改list的内容,但是可以修改list内元素的内容。

以上是java为我们提供的一些操作集合的方法,接下来就是第三方扩展或者我们引入的一些依赖提供的操作集合的方法了。

二:apache common包提供的CollectionUtils

这是我最常用的集合工具类,它提供了很多很实用很方便的方法。有些方法是面向JDK 8之前的版本,JDK 8之后我们一般都会使用Stream流来处理集合的排序和取交集、并集操作。

空集合判断(常用)
//空安全检查指定的集合是否为空
CollectionUtils.isEmpty(Collection<?> coll)
//空安全检查指定的集合是否为空。
CollectionUtils.isNotEmpty(Collection<?> coll)
取交集、并集、交集的补集、差集
//并集。
CollectionUtils.union(list1, list2);
//交集
CollectionUtils.intersection(list1, list2);
//交集的补集(析取)
CollectionUtils.disjunction(list1, list2);
//差集
CollectionUtils.subtract(list1, list2);

判断相等

//判断两个集合相等,可以比较集合中对象是否是同一个对象
CollectionUtils.isEqualCollection(list1, list2)

不可变集合

//转换集合为不可变集合,添加数据会报错
CollectionUtils.unmodifiableCollection(list);
apache另一个依赖Collectios4包下的CollectionUtils工具,也提供了判空,取交集,并集,差集的方法,也有一些其他方法

我在这里大致列一下这个工具类下的方法

/**
* 1、除非元素为null,否则向集合添加元素
*/
CollectionUtils.addIgnoreNull(personList,null);
/**
* 2、将两个已排序的集合a和b合并为一个已排序的列表,以便保留元素的自然顺序
*/
CollectionUtils.collate(Iterable<? extends O> a, Iterable<? extends O> b)
/**
* 3、将两个已排序的集合a和b合并到一个已排序的列表中,以便保留根据Comparator c的元素顺序。
*/
CollectionUtils.collate(Iterable<? extends O> a, Iterable<? extends O> b, Comparator<? super O> c)
/**
* 4、返回该个集合中是否含有至少有一个元素
*/
CollectionUtils.containsAny(Collection<?> coll1, T... coll2)
/**
* 5、如果参数是null,则返回不可变的空集合,否则返回参数本身。(很实用 ,最终返回List EMPTY_LIST = new EmptyList<>())
*/
CollectionUtils.emptyIfNull(Collection<T> collection)
/**
* 6、空安全检查指定的集合是否为空
*/
CollectionUtils.isEmpty(Collection<?> coll)
/**
* 7、 空安全检查指定的集合是否为空。
*/
CollectionUtils.isNotEmpty(Collection<?> coll)
/**
* 8、反转给定数组的顺序。
*/
CollectionUtils.reverseArray(Object[] array);
/**
* 9、差集
*/
CollectionUtils.subtract(Iterable<? extends O> a, Iterable<? extends O> b)
/**
* 10、并集
*/
CollectionUtils.union(Iterable<? extends O> a, Iterable<? extends O> b)
/**
* 11、交集
*/
CollectionUtils.intersection(Collection a, Collection b)
/**
*12、 交集的补集(析取)
*/
CollectionUtils.disjunction(Collection a, Collection b)
三:org.springframework.util 提供的CollectionUtils

spring的集合工具类也有很多可用性很高的方法,spring自己说是为了供框架内部使用,我们也是可以使用的。

//如果提供的 Collection 为null或为空,则返回true 。 否则,返回false 。
boolean isEmpty(@Nullable Collection<?> collection)
//如果提供的 Map 为null或为空,则返回true 。 否则,返回false 
boolean isEmpty(@Nullable Map<?, ?> map)
//将提供的数组转换为列表。 原始数组被转换为适当包装器类型的列表。
//注意:通常更喜欢标准的Arrays.asList方法。 这个arrayToList方法只是为了在运行时处理传入的 Object 值,该值可能是Object[]或原始数组。
List arrayToList(@Nullable Object source)
//将给定的数组合并到给定的集合中
void mergeArrayIntoCollection(@Nullable Object array, Collection<E> collection)
//将给定的 Properties 实例合并到给定的 Map 中,复制所有属性(键值对)。
//使用Properties.propertyNames()甚至可以捕获链接到原始 Properties 实例的默认属性。
void mergePropertiesIntoMap(@Nullable Properties props, Map<K, V> map)
//检查给定的迭代器是否包含给定的元素。
boolean contains(@Nullable Iterator<?> iterator, Object element)
//检查给定的 Enumeration 是否包含给定的元素。枚举中是否包含指定的元素
boolean contains(@Nullable Enumeration<?> enumeration, Object element)
//检查给定的 Collection 是否包含给定的元素实例。
//强制存在给定的实例,而不是为相等的元素返回true 。
boolean containsInstance(@Nullable Collection<?> collection, Object element)
//如果“ candidates ”中的任何元素包含在“ source ”中,则返回true ; 否则返回false 。
boolean containsAny(Collection<?> source, Collection<?> candidates)
//返回包含在“ source ”中的“ candidates ”中的第一个元素。 如果“ source ”中不存在“ candidates ”中的元素,则返回null 。 迭代顺序是特定于Collection实现的
E findFirstMatch(Collection<?> source, Collection<E> candidates)
//在给定集合中查找给定类型的单个值。如果存在明确匹配,则找到给定类型的值,如果没有找到或找到多个这样的值,则为null
T findValueOfType(Collection<?> collection, @Nullable Class<T> type)
/**
在给定集合中查找给定类型之一的单个值:在集合中搜索第一种类型的值,然后搜索第二种类型的值,依此类推。
参数:
collection – 要搜索的集合
类型 - 要查找的类型,按优先顺序排列
返回:
如果存在明确匹配,则找到给定类型之一的值,如果没有找到或找到多个这样的值,则为null 
*/
Object findValueOfType(Collection<?> collection, Class<?>[] types)
//确定给定的 Collection 是否只包含一个唯一的对象,如果集合包含对同一实例的单个引用或多个引用,则为true ,否则为false
boolean hasUniqueObject(Collection<?> collection)
//查找给定 Collection 的公共元素类型(如果有)。没有返回null
Class<?> findCommonElementType(Collection<?> collection)
//使用SortedSet.first()或以其他方式使用迭代器检索给定 Set 的第一个元素。第一个元素,没有则返回null  
T firstElement(@Nullable Set<T> set)      
//检索给定 List 的第一个元素,访问零索引。
T firstElement(@Nullable List<T> list)
//检索给定 Set 的最后一个元素,使用SortedSet.last()或以其他方式迭代所有元素(假设一个链接集)。
T lastElement(@Nullable Set<T> set)
//检索给定 List 的最后一个元素,访问最高索引。
T lastElement(@Nullable List<T> list)
//将给定枚举中的元素编组为给定类型的数组。 枚举元素必须可分配给给定数组的类型。 返回的数组将是与给定数组不同的实例。
A[] toArray(Enumeration<E> enumeration, A[] array)
//使Enumeration适应Iterator 
Iterator<E> toIterator(@Nullable Enumeration<E> enumeration)     
//返回指定多值映射的不可修改map
MultiValueMap<K, V> unmodifiableMultiValueMap(MultiValueMap<? extends K, ? extends V> targetMap)      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值