我想检查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?
你不能用直的阵列做,但你可以通过调用Set<T>
与.contains
。如果你觉得你会做很多isItemInSet
调用,考虑使用Set
s而不是数组 - 你会更快乐。
例如,使用HashSet<T>
使isItemInSet
成为O(1)运算(平均)。设置插入和删除也同样快。实际上,Java中的HashSet<T>
与Python set()
(类似的底层概念和性能特征)基本相同 - 您会看到许多调用查询,插入或删除集合的速度有了很大提高。
使用Java 9(及更高版本)即将使用@nneonneo指定的Set,我们可以在一行中实现成员资格测试,如下所示:
Set.of(item1, item2, item3).contains(reqItem)