java代码递归比较两个collection集合的差异,并返回差异的属性

时间: 2023-09-23 14:03:43 浏览: 47
下面是一个 Java 代码示例,用于递归比较两个 Collection 集合的差异,并返回差异的属性: ```java import java.util.*; public class CollectionComparator { public static void main(String[] args) { List<Map<String, Object>> list1 = new ArrayList<>(); List<Map<String, Object>> list2 = new ArrayList<>(); Map<String, Object> map1 = new HashMap<>(); map1.put("id", "1"); map1.put("name", "John"); map1.put("age", 25); map1.put("gender", "male"); Map<String, Object> map2 = new HashMap<>(); map2.put("id", "2"); map2.put("name", "Jane"); map2.put("age", 30); map2.put("gender", "female"); Map<String, Object> map3 = new HashMap<>(); map3.put("id", "3"); map3.put("name", "Bob"); map3.put("age", 35); map3.put("gender", "male"); list1.add(map1); list1.add(map2); list1.add(map3); Map<String, Object> map4 = new HashMap<>(); map4.put("id", "1"); map4.put("name", "John"); map4.put("age", 25); map4.put("gender", "male"); Map<String, Object> map5 = new HashMap<>(); map5.put("id", "2"); map5.put("name", "Jane"); map5.put("age", 30); map5.put("gender", "female"); list2.add(map4); list2.add(map5); Collection<Map<String, Object>> added = new ArrayList<>(); Collection<Map<String, Object>> removed = new ArrayList<>(); Collection<Map<String, Object>> updated = new ArrayList<>(); compareCollections(list1, list2, added, removed, updated); System.out.println("Added: " + added); System.out.println("Removed: " + removed); System.out.println("Updated: " + updated); } public static void compareCollections(Collection<Map<String, Object>> c1, Collection<Map<String, Object>> c2, Collection<Map<String, Object>> added, Collection<Map<String, Object>> removed, Collection<Map<String, Object>> updated) { for (Map<String, Object> map1 : c1) { boolean found = false; for (Map<String, Object> map2 : c2) { if (map1.get("id") == map2.get("id")) { found = true; if (!map1.equals(map2)) { updated.add(map1); } break; } } if (!found) { removed.add(map1); } } for (Map<String, Object> map2 : c2) { boolean found = false; for (Map<String, Object> map1 : c1) { if (map2.get("id") == map1.get("id")) { found = true; break; } } if (!found) { added.add(map2); } } } } ``` 这个例子中,我们使用了两个 List 集合来模拟需要比较的数据。我们将两个集合传递给 `compareCollections()` 方法,该方法会递归比较两个集合并返回差异的属性。`compareCollections()` 方法的实现如下: 1. 对于第一个集合中的每个 Map 对象,我们在第二个集合中查找是否存在相同的 id 属性。如果存在,则比较两个 Map 对象是否相等,如果不相等,则将 Map 对象添加到 updated 集合中。如果不存在,则将 Map 对象添加到 removed 集合中。 2. 对于第二个集合中的每个 Map 对象,我们在第一个集合中查找是否存在相同的 id 属性。如果不存在,则将 Map 对象添加到 added 集合中。 最后,我们打印出所有添加、删除和更新的 Map 对象。

相关推荐

最新推荐

recommend-type

java利用递归调用实现树形菜单的样式

主要给大家介绍了关于java利用递归调用实现树形菜单样式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

Java8使用lambda实现Java的尾递归

主要介绍了Java8使用lambda实现Java的尾递归的相关资料,需要的朋友可以参考下
recommend-type

利用java+mysql递归实现拼接树形JSON列表的方法示例

主要给大家介绍了关于利用java+mysql递归实现拼接树形JSON列表的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起看看吧。
recommend-type

Java递归算法经典实例(经典兔子问题)

本文主要对经典的兔子案例分析,来进一步更好的理解和学习java递归算法,具有很好的参考价值,需要的朋友一起来看下吧
recommend-type

Java无限级树(递归)超实用案例

下面小编就为大家带来一篇Java无限级树(递归)超实用案例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用

![MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用](https://img-blog.csdnimg.cn/2020050917173284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thbmdqaWVsZWFybmluZw==,size_16,color_FFFFFF,t_70) # 1. MATLAB取整函数概述** MATLAB取整函数是一组强大的工具,用于对数值进行
recommend-type

我想做python的算法工程师,我应该学什么?学习的顺序是什么?网上有什么推荐的免费课程吗?回答具体精确一点不要太笼统

对于想要成为 Python 算法工程师的人来说,他们应该先从掌握 Python 的基础语法开始,然后学习数据结构和算法,并且要深入了解 Python 中的一些科学计算和数据处理库,比如 NumPy、Pandas 等。 学习的顺序可以是先学习基础语法和编程技巧,然后再学习数据结构和算法相关的知识,最后深入了解数据处理和科学计算相关的库。 对于免费课程的推荐,我建议你可以先去 Coursera、edX、Udacity 等网站上寻找相关课程,这些网站上有很多优质的 Python 编程和算法课程,你可以根据自己的需求和学习进度进行选择。此外,还可以考虑一些在线编程网站,如 HackerRank、L
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。