两个list集合对象,根据某一A集合中对象id判断是否在另一个B集合对象的id中是否有重复,取A集合中有,B集合中没有的对象

需要判断,并且获取对象的具体信息


one: for (int i = 0; i < A.size(); i++) {
    for (int j = 0; j < B.size(); j++) {
        if (A.get(i).getId().equals(B.get(j).getId())) {
            continue one;
        }
    }
    // A集合中,B集合没有的对象id
    System.out.println(A.get(i).getId());

}

只需要id时可用下面这种方式

                List<String> aIds = A.stream().map(A::getId).collect(Collectors.toList());
                List<String> bIds = B.stream().map(B::getId).collect(Collectors.toList());
                // 对比
                for(String id:aIds){
                    if(!bIds.contains(id)){
                        // A集合中,B集合没有的对象id
                        System.out.println(id);
                    }
                }

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java 8 的 Stream API 来处理这个问题。具体步骤如下: 1. 使用`stream()`方法将 List 转换为 Stream 对象。 2. 使用`distinct()`方法去重,根据对象的`id`属性确定唯一性。 3. 使用`filter()`方法过滤出重复对象并收集到一个新的 List 。 4. 最后,判断新的 List 是否为空,即可得出是否重复数据。 以下是示例代码: ```java import java.util.List; import java.util.stream.Collectors; public class CheckDuplicateObjects { public static boolean hasDuplicate(List<MyObject> list) { List<MyObject> duplicates = list.stream() .distinct() .filter(item -> list.stream().filter(i -> i.getId() == item.getId()).count() > 1) .collect(Collectors.toList()); return !duplicates.isEmpty(); } } class MyObject { private int id; private String name; // constructor, getters and setters @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof MyObject)) { return false; } MyObject other = (MyObject) obj; return id == other.id; } @Override public int hashCode() { return Integer.hashCode(id); } } ``` 在上面的示例代码,我们定义了一个`CheckDuplicateObjects`类,其包含一个`hasDuplicate`方法,它接收一个包含对象List 作为参数,并返回一个布尔值,表示是否重复数据。 在方法,我们首先将 List 转换为 Stream 对象,然后使用`distinct()`方法去重。由于`distinct()`方法默认使用对象的`equals()`和`hashCode()`方法来判断唯一性,因此我们需要在对象重写这两个方法,以实现根据`id`属性去重。 接着,我们使用`filter()`方法过滤出重复对象,并使用`collect()`方法将它们收集到一个新的 List 。最后,我们判断新的 List 是否为空,即可得出是否重复数据。 请注意,上面的代码使用了`equals()`和`hashCode()`方法来判断唯一性,因此需要在`MyObject`类重写这两个方法。如果你使用的是其他类,需要根据具体情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值