java8 过滤两个list集合中相同的元素 并返回相同list集合

这段代码展示了如何通过Java Stream API过滤并收集学生支付数据。它从studentForPayResultList中筛选出那些学生ID存在于BaseActivePay的studentId集合中的记录,最后将结果转换为一个新的列表。
摘要由CSDN通过智能技术生成
List<FindByStudentForPayResult> result = studentForPayResultList.stream().filter(
                (studentForPayResult) ->payList.stream().map(BaseActivePay::getStudentId).collect(Collectors.toList()).contains(studentForPayResult.getStudentId())
        ).collect(Collectors.toList());
下面是一个 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 对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值