true
如果list1
并list2
分享至少 1 件商品,我该如何退货?
示例:list1
= (1,2,3) ... list2
= (2,3,4)
someFunction(list1, list2); // returns true
true
如果list1
并list2
分享至少 1 件商品,我该如何退货?
示例:list1
= (1,2,3) ... list2
= (2,3,4)
someFunction(list1, list2); // returns true
看看Collections.disjoint
方法。如果是真的,则没有共同点。
就像 TofuBeer 说的,看看Collections.disjoint(如果我有任何声誉,我会支持他的......):
public void main() {
List<Integer> list1 = Arrays.asList(1,2,3);
List<Integer> list2 = Arrays.asList(2,3,4);
someFunction(list1, list2);
}
private boolean someFunction(List<Integer> list1, List<Integer> list2) {
return ! Collections.disjoint(list1, list2);
}
如果空间不是问题,为什么不直接使用 HashMap?
Iterator it1 = list1.iterator(), it2 = list2.iterator();
Map <K, Integer> listmap = new HashMap <K, Integer> ();
while (it1.hasNext() && it2.hasNext()) {
K elem1 = it1.next(), elem2 = it2.next();
if ((listmap.get(elem1) != null && listmap.get(elem1) == 2) ||
(listmap.get(elem2) != null && listmap.get(elem2) == 1)) {
return false;
}
else {
listmap.put(elem1, 1);
listmap.put(elem2, 2);
}
}
return true
这样,您不必遍历整个第二个数组来检查第一个数组的每个元素,因为向哈希表添加元素是在摊销常数时间内发生的。
顺便说一句,更快的解决方案是使用IntHashMap
Apache commons(或SparseArray
Android)。
使用“迭代器”迭代一个列表,并使用其他列表的包含方法来检查元素。不是吗?
public boolean someFunction(List<T> l1,List<T> l2)
{
Iterator<T> i = l1.iterator();
while(i.hasNext())
{
if(l2.contains(i.next())
return true;
}
return false;
}