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>
	 * 两个集合无差集则返回空集合
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值