获取Object是否部分匹配的布尔值(Java)

时间:2011-09-25 15:21:06

标签: java filter treeset

我认为这是一个简单的问题,如果我能找出搜索术语来描述它。它类似于Finding all objects that have a given property inside a collection,除了我只想要一个布尔“它就在那里”的结果。

假设我有一个已排序的Cats TreeSet,每个都有一个名字,年龄,食物等。我有一些复杂的事情要做的每个潜在的猫名,但我想跳过它,如果我的猫已经有了具有该名称的TreeSet。我不在乎其他任何属性是否匹配。我显然不能if (!AlltheCats.contains(candidateName))...因为那样我就会在字符串candidateName和对象Cat之间出现类型不匹配的情况。但我不认为我可以创建一个对象来搜索相同的匹配,因为我不关心年龄,食物等的值。

这样做有效/优雅的方法是什么?

1 个答案:

答案 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
    }