Java 如何根据另一个列表中对象的字段值从列表中删除元素

Java 如何根据另一个列表中对象的字段值从列表中删除元素,java,arraylist,collections,java-stream,Java,Arraylist,Collections,Java Stream,我有两个对象列表列表和列表 现在,我如何从List中删除元素满足obj1.x==obj2.y的对象最好的方法是将第二个List对象obj2属性y收集到集合中 Set<String> ySet = objs2.stream().map(Obj2::getY) .collect(Collectors.toSet()); obj2.forEach(per->ids.add(per.getId()); List result=obj1.stream().filter(per->ids.co

我有两个对象列表<代码>列表和列表


现在,我如何从
List
中删除元素满足
obj1.x==obj2.y

的对象最好的方法是将第二个List对象
obj2
属性
y
收集到
集合中

Set<String> ySet = objs2.stream().map(Obj2::getY)
.collect(Collectors.toSet());
obj2.forEach(per->ids.add(per.getId());
List result=obj1.stream().filter(per->ids.contains(per.getId()).collect(Collectors.toList());

这个问题不清楚。身份证的目的是什么?此外,到目前为止您尝试了什么?请澄清
obj1.x==obj2.y
。不清楚您是否需要基于索引的此项。
Set<String> ySet = objs2.stream().map(Obj2::getY)
.collect(Collectors.toSet());
list1.removeIf(obj1->ySet.contains(obj1.x));
obj2.forEach(per -> ids.add(per.getId()));

List<Object> result = obj1.stream().filter(per -> ids.contains(per.getId())).collect(Collectors.toList());