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>
* 两个集合无差集则返回空集合
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix