gpt4 book ai didi

java - 如何添加到基于 Java 中特定谓词的集合?

转载 作者:行者123 更新时间:2023-11-29 09:55:00 25 4
gpt4 key购买 nike

我有一个包含人的 Java 集合:

Set<Person> uniquePeople = new HashSet<Person>();

我还有一个包含很多人的列表(其中一些人拥有相同的名字,例如,世界上不止一个“Bob”)。

List<Person> theWorld = // ... a BIG list of people

我想遍历这个列表,当且仅当他们的名字不存在于集合中时,将一个人添加到 uniquePeople 集合,例如:

for (Person person : theWorld) {
uniquePeople.add(person IFF uniquePeople.doesNotContain(person.name));
}

在 Java 中有没有一种简单的方法可以做到这一点?此外, Guava 可能会这样做(?),但我根本没有使用过它,所以我希望能指出正确的方向。

最佳答案

更好的选择是放弃使用 Set 而是使用 Map<String, Person> (删除名称)。

如果你想使用一个集合,我建议你使用一个新的对象类型(它只包含一个名字,可能还有一个对 Person 的引用)。

确保覆盖 equals,这样它只会比较名字,然后你可以获得一组所有唯一的人。

您还可以将 person 子类化以覆盖 equals 以执行您想要的操作。

根据定义,集合不会只对一个人执行您想要的操作,因为它们完全依赖于使用 equals,因此这些是您的解决方法。您还可以实现(或在线查找)一个使用比较器而不是依赖于 equals 的集合,但我认为标准 java 中不存在这样的类。

关于java - 如何添加到基于 Java 中特定谓词的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16092435/

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