gpt4 book ai didi

java - 在集合中查找重复项

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:55 24 4
gpt4 key购买 nike

在集合中查找和标记重复对象的最佳方法是什么?假设我们有一个 List persons,我们的复制策略基于名字和姓氏的完全匹配。

  1. 识别所有重复项
  2. 标记每个重复的人,表明它是重复的
  3. 对于每个重复的人,确定它是重复的对象

有没有用 Guava 做这个的简单方法?

最佳答案

您不需要 Guava 来执行此操作:

List<Person> people = ...
Map<Name, Person> peopleByName = new HashMap<>();
for (Person person : people) {
// Name is a simple value class with equality based on its fields
Name name = new Name(person.getFirstName(), person.getLastName());
Person firstPersonWithName = peopleByName.get(name);
if (firstPersonWithName == null) {
peopleByName.put(name, person);
} else {
// or whatever you do to mark a duplicate
person.setDuplicateOf(firstPersonWithName);
}
}

就是说,您可以使用 Guava Table 而不是 Map 并避免需要创建 Name...使用名字例如,作为行键和姓氏作为列键。

另一种选择是使用 Multimaps.index 按姓名为列表中的所有人编制索引。然后,对于映射到特定名称的每个人员列表,第一个人将是您列表中具有该名称的第一个人,而其他人将是重复的。

关于java - 在集合中查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108179/

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