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

问题描述 投票:8回答:2

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

我想在java中这样做:

def is_item_in_set(item, item_set):
    return item in item_set

我写过这个:

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?

java python set membership
2个回答
12
投票

你不能用直的阵列做,但你可以通过调用Set<T>.contains。如果你觉得你会做很多isItemInSet调用,考虑使用Sets而不是数组 - 你会更快乐。

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


0
投票

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

Set.of(item1, item2, item3).contains(reqItem)
© www.soinside.com 2019 - 2024. All rights reserved.