我想检查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 ?
答案 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)