【问题标题】:Get a Boolean value for whether an Object partially matches (Java)获取对象是否部分匹配的布尔值(Java)
【发布时间】:2011-11-24 16:14:02
【问题描述】:

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

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

什么是高效/优雅的方法?

【问题讨论】:

    标签: java filter treeset


    【解决方案1】:

    创建一个包含名称的字符串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
        }
    

    【讨论】:

    • 谢谢,我一直在思考如何在 TreeSet 中执行此操作,结果忽略了这种简单的好方法!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 2011-03-02
    相关资源
    最近更新 更多