java - 如何在不更改任何一组的情况下找到两组之间的差异?

标签 java set

<分区>

我有 2 组 s1s2 一个条件是 s1 > s2
我的要求是我不能在 s1 中进行更改。并找到两组的差异,我们可以使用另一组来存储结果。

Set<String> s1 = new HashSet<String>();
s1.add("a");
s1.add("b");
s1.add("c");
s1.add("n");
s1.add("d");
Set<String> s2 = new HashSet<String>();
s2.add("b");
s2.add("d");
s2.add("c");

我想要这样的输出
s3= set1-set2
输出:
s3=[a,n]

s1s2 都是超过 10000 个元素的巨大集合并且在循环中。所以我不想先将 s1 复制到 s3 然后删除 s2

最佳答案

你可以使用这个:

Set<String> s3 = new HashSet<String>();
for(String temp : s1){
    if(!s2.contains(temp)){
        s3.add(temp);
    }
}
for (String temp : s2) {
    if (!s1.contains(temp)) {
        s3.add(temp);
    }
}

关于java - 如何在不更改任何一组的情况下找到两组之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20422120/

相关文章:

javascript - Object.defineProperty get/set 闭包

Java 通用列表<>

java - 如何减少代码中List的使用?

java - 如何区分发送推送通知的设备是android还是iOS?

java - 用于谷歌搜索的 google java api

c++ - 在 C++ 中重新声明具有相同名称的 std::container() 是否会清除以前的数据?

algorithm - Dijkstra 的算法集

swift - set on swift 语言的问题

java - 如何断言或验证单元测试中 "almost"相同的 2 段文本

java - 如何在 lucene 中编写正则表达式模式?