【发布时间】:2019-07-02 19:23:04
【问题描述】:
我有两个对象列表,它们的名称在两个列表中都重复。我需要从 list2 中删除 list1 中的所有重复值。
下面是场景, 类有 name 变量,这个变量需要检查 list1 中的重复值并需要删除。
Class ObjectClass{
String name;
}
//这是第一个列表有 3 个对象
List<ObjectClass> list1= new ArrayList();
ObjectClass objectClassDataL1= new ObjectClass();
objectClassDataL1.setName("test");
list1.add(objectClassDataL1);
ObjectClass objectClassDataL2= new ObjectClass();
objectClassDataL2.setName("test2");
list1.add(objectClassDataL2);
ObjectClass objectClassDataL3= new ObjectClass();
objectClassDataL3.setName("test3");
list1.add(objectClassDataL3);
List<ObjectClass> list2= new ArrayList();
ObjectClass objectClassData1= new ObjectClass();
objectClassData1.setName("test");
list2.add(objectClassData1);
ObjectClass objectClassData2= new ObjectClass();
objectClassData2.setName("test3");
list2.add(objectClassData2);
我需要删除 list1 中具有 name 值的对象,如 list2 中一样。
例如这里从 list1 中删除数据后,list1 应该只包含一个对象数据。
预期输出:
list1 --> [Object('test2')]
list1 大小为 1
请在 Java 8 中使用流向我推荐。
【问题讨论】:
-
如果你覆盖了
equals方法,你可以使用removeAll()
标签: java java-8 java-stream