在两个列表中查找相似但不相等的实体(Java)



假设我有一个类"Person",如下所示:

public class Person {
String name;
int age;
String address;
// Getters and Setters etc.
}

我有两个"个人"列表:一个要创建的列表和一个要删除的列表。

删除列表=

[
{
"name: "David"
"age": 30,
"address": "10 Main St."
},
{
"name: "Mary"
"age": 31,
"address": "8 Main St."
},
{
"name: "John"
"age": 40,
"address": "9 Side St."
}
]

创建列表=

[
{
"name: "David"
"age": 30,
"address": "50 Fleet St."
},
{
"name: "Oliver"
"age": 31,
"address": "40 10th St."
},
{
"name: "Jane"
"age": 40,
"address": "1 Broadway"
}
]

我想得到一对(或一对列表(,其中LHS和RHS中的名称和年龄相同,但地址不同。这个想法是,我有一个要删除的实体列表和一个要创建的实体列表,但在David的情况下,我不想删除实体并创建新的实体,因为它有依赖关系。我只想更改他的地址。

Person中没有唯一的标识符,所以我不能只按id进行比较。

在现实世界中,您没有足够的信息来决定记录是不同的人还是只是地址更改。

如果你在玩具环境中玩,你永远不会遇到两个名字和年龄相同的人,那么THAT(name&age(是你的复合主键,你可以在此基础上编写hashCode()equals()。在这种情况下,这是Java 8的重复:使用流检查两个列表中的公共元素

最新更新