Java相当于Python'in' - 用于集成员资格测试?

时间:2013-03-31 08:51:37

标签: java python set membership

我想检查item中是否存在item set

我想在 java

中执行此操作
def is_item_in_set(item, item_set):
    if item in item_set:
        return true
    else:
        return false

(如果我的python不是pythonic,请道歉。只是想传达我的意图。)

我写过这个:

boolean isItemInSet(String item, String[] itemSet) {
    for(int i =0; i < itemSet.length; ++i) {
        if(item.equals(itemSet[i])) {
            return true;
        }
    }
    return false;
}

有没有更好的方法在Java中测试 set-membership

2 个答案:

答案 0 :(得分:12)

您不能使用直线阵列,但可以通过调用Set<T>.contains。如果您觉得自己会进行大量isItemInSet次呼叫,请考虑使用Set而不是数组 - 您会更开心。

例如,使用HashSet<T>使isItemInSet进行O(1)操作(平均)。设置插入和删除也同样快。实际上,Java中的HashSet<T>与Python set()基本相同(类似的基本概念和性能特征) - 您会看到许多调用查询,插入或删除的速度有很大提高集合。

答案 1 :(得分:0)

使用Java 9(及更高版本)指日可待,并使用@nneonneo指定的Set,我们可以在一行中完成成员资格测试,如下所示:

Set.of(item1, item2, item3).contains(reqItem)