1

我认为这是一个简单的问题,如果我能找出搜索词来描述它。它类似于在集合中查找所有具有给定属性的对象,只是我只想要一个布尔“是否存在”结果。

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

什么是一种有效/优雅的方式来做到这一点?

4

1 回答 1

3

创建一个包含名称的字符串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
    }
于 2011-09-25T15:25:14.870 回答