两个整数集合之间的差异

发布于 2024-10-08 18:57:15 字数 127 浏览 0 评论 0原文

我有两组整数(即第一组是:2,3,4,5,第二组是1,2,3,6)。如何找到加法数组(1,6)和减法数组(4,5)?我说的是收集,但我将它们保存在 Set 中,但是如果您有任何其他想法,我也可以使用它。我也会将加法和减法保留在不同的集合中。

I have two set of integers(i.e. first one is: 2,3,4,5 and second one is 1,2,3,6). How can I found the addition numbers array(1,6) and subtracted numbers array(4,5)? I said collection but I keep them at Set however if you have any other idea, I can use it too. I will keep addition numbers and subtracted numbers within different collections too.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

人生百味 2024-10-15 18:57:15

我假设你指的是一组中的元素,而不是另一组中的元素。

Set<Integer> first = new LinkedHashSet<Integer>(Arrays.asList(2,3,4,5));
Set<Integer> second = new LinkedHashSet<Integer>(Arrays.asList(1,2,3,6));
Set<Integer> addition = subtract(first, second);
Set<Integer> subtracted = subtract( second, first);

public static <T> Set<T> subtract(Set<T> set1, Set<T> set2) {
    Set<T> ret = new LinkedHashSet<T>(set1);
    ret.removeAll(set2);
    return ret;
}

I assume you mean elements in one set but not the other.

Set<Integer> first = new LinkedHashSet<Integer>(Arrays.asList(2,3,4,5));
Set<Integer> second = new LinkedHashSet<Integer>(Arrays.asList(1,2,3,6));
Set<Integer> addition = subtract(first, second);
Set<Integer> subtracted = subtract( second, first);

public static <T> Set<T> subtract(Set<T> set1, Set<T> set2) {
    Set<T> ret = new LinkedHashSet<T>(set1);
    ret.removeAll(set2);
    return ret;
}
梦言归人 2024-10-15 18:57:15

不确定这是否是您需要的,但您可以使用 google guava 来实现:

import java.util.HashSet;
import java.util.Set;

import com.google.common.collect.Sets;


public class NumbersTest {

    public static void main(String[] args) {
        Set<Integer> set1 = new HashSet<Integer>(){{add(2);add(3);add(4);add(5);}};
        Set<Integer> set2 = new HashSet<Integer>(){{add(1);add(2);add(3);add(6);}};
        System.out.println("Nums Unique to set1: " + Sets.difference(set1, set2));
        System.out.println("Nums Unique to set2: " + Sets.difference(set2, set1));
    }
}

输出:

Nums Unique to set1: [4, 5]
Nums Unique to set2: [1, 6]

Not sure whether that's what you need but you can use google guava for that:

import java.util.HashSet;
import java.util.Set;

import com.google.common.collect.Sets;


public class NumbersTest {

    public static void main(String[] args) {
        Set<Integer> set1 = new HashSet<Integer>(){{add(2);add(3);add(4);add(5);}};
        Set<Integer> set2 = new HashSet<Integer>(){{add(1);add(2);add(3);add(6);}};
        System.out.println("Nums Unique to set1: " + Sets.difference(set1, set2));
        System.out.println("Nums Unique to set2: " + Sets.difference(set2, set1));
    }
}

Outputs:

Nums Unique to set1: [4, 5]
Nums Unique to set2: [1, 6]
山人契 2024-10-15 18:57:15

绝对不是最好的解决方案,但是..

public class IntsFind {
public static void main(String[] args) {
    List<Integer> first = Arrays.asList(2, 3, 4, 5);
    List<Integer> second = Arrays.asList(1, 3, 4, 6);

    List<Integer> missing = new LinkedList<Integer>();
    List<Integer> added = new LinkedList<Integer>(second);

    for (Integer i : first) {
        if (!added.remove(i)) {
            missing.add(i);
        }
    }

    System.out.println("Missing ints in second: " + missing);
    System.out.println("New ints in second: " + added);
}

}

打印:

第二个缺少整数:[2, 5]
第二个新整数:[1, 6]

编辑 不需要包装 Arrays.asList,如 @Peter Lawrey 所指出的

Definitely not the best solution, but though..

public class IntsFind {
public static void main(String[] args) {
    List<Integer> first = Arrays.asList(2, 3, 4, 5);
    List<Integer> second = Arrays.asList(1, 3, 4, 6);

    List<Integer> missing = new LinkedList<Integer>();
    List<Integer> added = new LinkedList<Integer>(second);

    for (Integer i : first) {
        if (!added.remove(i)) {
            missing.add(i);
        }
    }

    System.out.println("Missing ints in second: " + missing);
    System.out.println("New ints in second: " + added);
}

}

Prints:

Missing ints in second: [2, 5]
New ints in second: [1, 6]

EDIT No need to wrap Arrays.asList, as pointed by @Peter Lawrey

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文