13

我想检查一个是否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 中的集合成员资格?

4

2 回答 2

15

你不能用一个直接的数组来做到这一点,但你可以Set<T>通过调用.contains. 如果你觉得你会做很多isItemInSet调用,考虑使用Sets 而不是数组——你会更开心。

例如,使用 aHashSet<T>进行isItemInSetO(1) 操作(平均而言)。集插入和删除也同样快。事实上,HashSet<T>Java 中的 a 本质上与 Python 相同set()(类似的底层概念和性能特征)——您将看到在集合上多次调用查询、插入或删除时速度有了很大提高。

于 2013-03-31T08:55:52.733 回答
0

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

Set.of(item1, item2, item3).contains(reqItem)
于 2019-02-25T10:46:59.987 回答