java集合类的比较

java集合类的比较

正文:

判断集合是否相等,使用org.apache.commons.collections包下CollectionUtils.isEqualCollection(Collection a, Collection b)方法进行比较

在开发过程中,会遇到比较集合是否相等(元素数量,元素顺序等),使用Object的equal方法比较,单纯的比较内存地址,不能满足业务需求

public static void main(String[] args) {
    List<String> list1 = new ArrayList<>();
    List<String> list2 = new ArrayList<>();
    
    list1.add("aaa");
    list1.add("ccc");//两个集合add元素顺序不一致
    list1.add("bbb");
    
    list2.add("aaa");
    list2.add("bbb");
    list2.add("ccc");
    
    //排序
    List<String> sortedList1 = list1.stream().sorted(Comparator.comparing(Function.identity())).collect(Collectors.toList());
    List<String> sortedList2 = list2.stream().sorted(Comparator.comparing(Function.identity())).collect(Collectors.toList());
    
    System.out.println(CollectionUtils.isEqualCollection(list1,list2));
    System.out.println(CollectionUtils.isEqualCollection(sortedList1,sortedList2));
    
    System.out.println(Objects.equals(list1,list2));
    System.out.println(Objects.equals(sortedList1,sortedList2));
}


输出:
true
true
false
true

比较两个集合的差集,使用cn.hutool.core.collection包下的**CollUtil.disjunction**(Collection a, Collection b) 方法进行比较

两个集合的差集<br>
	 * 针对一个集合中存在多个相同元素的情况,计算两个集合中此元素的个数,保留两个集合中此元素个数差的个数<br>
	 * 例如:
	 *
	 * <pre>
	 *     disjunction([a, b, c, c, c], [a, b, c, c]) -》 [c]
	 *     disjunction([a, b], [])                    -》 [a, b]
	 *     disjunction([a, b, c], [b, c, d])          -》 [a, d]
	 * </pre>
	 * 任意一个集合为空,返回另一个集合<br>
	 * 两个集合无差集则返回空集合
posted @   爬蜀道的猴子  阅读(488)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示