我认为这是一个简单的问题,如果我能找出搜索词来描述它的话。它类似于 Finding all objects that have a given property inside a collection除了我只想要一个 boolean 值“是否存在”结果。
假设我有一个猫的排序树集,每只猫都有名字、年龄、食物等。我需要为每个可能的猫名字做一些复杂的事情,但如果我的猫中已经有一只猫,我想跳过它具有该名称的 TreeSet。我不在乎其他任何属性是否匹配。我显然不能执行 if (!AlltheCats.contains(candidateName))...
因为那样我将在字符串 candidateName 和对象 Cat 之间出现类型不匹配。但我不认为我可以创建一个对象来搜索相同的匹配项,因为我不关心年龄、食物等的值。
执行此操作的高效/优雅方法是什么?
最佳答案
创建一个 HashSet包含名称的字符串,每次你在一只猫上调用你的方法时,首先检查它是否已经在集合中,如果是,则跳过这只猫。继续修改此集合。
(*)此答案假定您要为一只具有相同名称的猫 [而不是 0] 调用该方法。
应该看起来像这样:
Set<String> names = new HashSet<String>();
for (Cat c : set) {
if (names.contains(c.getName())) {
continue;
}
names.add(c.getName());
c.foo(); //your method here
}
关于java - 获取对象是否部分匹配的 boolean 值 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546438/