比较2个HashSets的常见对象

时间:2017-02-11 19:45:42

标签: java list set

我有一个问题,我有两个HashSets,

Set<String> list1 = new HashSet<String>(oldList1);
Set<String> list2 = new HashSet<String>(oldList2);

我想检查一下&#34; String&#34; list1中存在list2。什么是最快的方式呢?请记住,两组都有超过10k的字符串,所以相对较快的东西会很好。

任何帮助表示赞赏!

2 个答案:

答案 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);
    }