gpt4 book ai didi

java - 从另一个对象列表中删除重复的列表对象值

转载 作者:搜寻专家 更新时间:2023-11-01 01:48:54 26 4
gpt4 key购买 nike

我有两个对象列表,它们的名称在两个列表中都是重复的。我需要从 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 size is 1

请建议我使用 Java 8 中的流。

最佳答案

Please suggest me in JAVA 8 with stream,

这里你不想使用流,因为你想修改现有的list1
您可以做的是在 Set 中添加 list2 元素的名称,并从 list1 中删除未包含在 Set 中的元素:

Set<String> namesInList2 = list2.stream().map(ObjectClass::getName).collect(toSet());
list1.removeIf(o -> namesInList2.contains(o.getName());

它分两步进行,但足够清晰和高效。

关于java - 从另一个对象列表中删除重复的列表对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54594309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com