请问大神么,两个list对象 ,根据对象里面某个属性 取差集

qq_16610733 2017-05-12 01:14:03
List<User> list1= new ArrayList<>();
for(int i=0 ;i<=3; i++){
User user1=new User();
user1.setId(i)
user1.setName(" 小明")
list1.add(user1)
}
)
List<User> list2= new ArrayList<>();
for(int i=0 ;i<=2; i++){
User user2=new User();
user2.setId(i)
user1.setName(" 小王")
list1.add(user2)
}
根据 id 是否相同 取差集 搞了半天都有问题,求大神帮帮忙
...全文
3848 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
鱼鱼要起飞 2020-03-13
  • 打赏
  • 举报
回复 1
引用 5 楼 luoljiao 的回复:
根据account 和 groupid 是否相同 List<GroupPeople> distinctByUniqueList = groupPeopleList.stream() //groupPeopleList - dbaGroupPeoples 差集 .filter(item -> !dbaGroupPeoples.stream() .map(e -> e.getAccount() + e.getGroupId()) .collect(Collectors.toList()) .contains(item.getAccount() + item.getGroupId())) //去重 .filter(UniqueUtils.distinctByKey(e -> e.getAccount())) .peek(e -> e.setId(UUIDUtil.uuid())) .collect(Collectors.toList());
思路绝了!
luoljiao 2018-10-18
  • 打赏
  • 举报
回复
根据account 和 groupid 是否相同 List<GroupPeople> distinctByUniqueList = groupPeopleList.stream() //groupPeopleList - dbaGroupPeoples 差集 .filter(item -> !dbaGroupPeoples.stream() .map(e -> e.getAccount() + e.getGroupId()) .collect(Collectors.toList()) .contains(item.getAccount() + item.getGroupId())) //去重 .filter(UniqueUtils.distinctByKey(e -> e.getAccount())) .peek(e -> e.setId(UUIDUtil.uuid())) .collect(Collectors.toList());
宾灬 2017-05-12
  • 打赏
  • 举报
回复
判断对象是否相等,是根据hashcode和equals方法来确定的,你要根据id来判断,那就重写User类的hashcode和equals方法,开发工具如 eclipse ide都有快捷键可以直接复写这两个方法(选属性的时候只选id就行了)。
qq_16610733 2017-05-12
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
list1.removeAll(list2);。。。。重写hashCode和equals方法。。
大神,能不能详细点,汗
qq_16610733 2017-05-12
  • 打赏
  • 举报
回复
大神,能不能详细点
李德胜1995 2017-05-12
  • 打赏
  • 举报
回复
list1.removeAll(list2);。。。。重写hashCode和equals方法。。

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧