gpt4 book ai didi

java - ListUtils Subtract 未按预期工作

转载 作者:行者123 更新时间:2023-12-01 16:49:53 26 4
gpt4 key购买 nike

我有几个对象列表 List<test> listAList<test> listB 。我需要减去listAlistB并获取listA和listB中不匹配的对象列表。如果两个列表具有相同的对象,我不应该得到任何值。我尝试使用 ListUtils.Subtract但不幸的是,我没有得到正确的结果。请参阅下面的示例代码:

public class test {
private String firstName;
private String lastName;

public test(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}

List<test> listA = new ArrayList<>(Collections.singletonList(new test("sam", "rik")));
List<test> listB = new ArrayList<>();
listB.add(new test("sam", "rik"));
listB.add(new test("nick", "wilson"));

List<test> reslt = ListUtils.subtract(listB, listA); // I need to get only nick and wilson object here

最佳答案

因为您还没有重写 test 类的 .equals() 方法。 ListUtils.subtract() 使用 equals() 方法来确定要删除的项目。

重写test类中的.equals(),这样两个具有相同字段值的test实例将被视为相等。

相同字段值的 .equals() 实现示例

@Override
public boolean equals(Object o) {

if (this == o)return true;// self check
if (o == null) return false; // null check
if (getClass() != o.getClass()) return false; // type check and cast
Test test = (Test) o;
// field comparison
return Objects.equals(firstName, test.firstName)
&& Objects.equals(lastName, test.lastName);
}

关于java - ListUtils Subtract 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61710911/

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