我有一个问题,我有两个HashSets,
Set<String> list1 = new HashSet<String>(oldList1);
Set<String> list2 = new HashSet<String>(oldList2);
我想检查一下&#34; String&#34; list1
中存在list2
。什么是最快的方式呢?请记住,两组都有超过10k的字符串,所以相对较快的东西会很好。
任何帮助表示赞赏!
答案 0 :(得分:2)
如果您想检查list1
中是否还有{em>任何 字符串,那么您也可以写一下
list2
如果它们有任何共同的元素,则为真。如果你想找到答案,只需做一个简单的循环:
!Collections.disjoint(list1, list2)
答案 1 :(得分:0)
另一种选择是使用Set限制来添加重复。方法add()
将帮助您找到所有相同的字符串。
如果指定的元素尚不存在,则将其添加到此集合中 (可选操作)。更正式地,将指定的元素e添加到 如果集合中不包含元素e2(e == null? e2 == null:e.equals(e2))。如果此集已包含元素, 调用使集合保持不变并返回false。结合 对构造函数的限制,这确保了永远不会 包含重复的元素。
Set<String> list1 = new HashSet<String>();
list1.add("a");
list1.add("b");
list1.add("c");
Set<String> list2 = new HashSet<String>();
list2.add("b");
list2.add("c");
list2.add("d");
Set<String> listCommon = new HashSet<String>();
for (String element : list2) {
if (!list1.add(element)) {
listCommon.add(element);
}
}
// all collected duplicates
for (String element : listCommon) {
System.out.println(element);
}