我认为这是一个简单的问题,如果我能找出搜索术语来描述它。它类似于Finding all objects that have a given property inside a collection,除了我只想要一个布尔“它就在那里”的结果。
假设我有一个已排序的Cats TreeSet,每个都有一个名字,年龄,食物等。我有一些复杂的事情要做的每个潜在的猫名,但我想跳过它,如果我的猫已经有了具有该名称的TreeSet。我不在乎其他任何属性是否匹配。我显然不能if (!AlltheCats.contains(candidateName))...
因为那样我就会在字符串candidateName和对象Cat之间出现类型不匹配的情况。但我不认为我可以创建一个对象来搜索相同的匹配,因为我不关心年龄,食物等的值。
这样做有效/优雅的方法是什么?
答案 0 :(得分:3)
创建一个包含名称的HashSet个字符串,每次在cat上调用你的方法时,首先检查它是否已经在集合中,如果是,则跳过这个cat。继续修改此设置。
(*)这个答案假设你想要为一只猫[而不是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
}