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

2022-09-04 20:56:25

我想检查 .itemitem 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中的集成员资格


答案 1

不能使用直数组执行此操作,但可以通过调用 .contains 来使用 Set<T>。如果你觉得你会做很多调用,考虑使用s而不是数组 - 你会更快乐。isItemInSetSet

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


答案 2

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

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