java – 如何计算两个以上HashSet之间的交集?

前端之家收集整理的这篇文章主要介绍了java – 如何计算两个以上HashSet之间的交集?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑下面的代码以及4个HashSets填充在其他地方的事实.

我的目标是包含所有4个HashSets中常见的所有元素.

我的问题是,首先,我做得对吗?其次,如果我做得对,有没有更好的方法呢?如果没有,那么我对此问题有什么解决方案?

static Set<String> one=new HashSet<>();
static Set<String> two=new HashSet<>();
static Set<String> three=new HashSet<>();
static Set<String> four=new HashSet<>();

private static void createIntersectionQrels() {
    ArrayList<String> temp = new ArrayList<>();
    Set<String> interQrels = new HashSet<>();

    temp.addAll(one);
    one.retainAll(two);
    interQrels.addAll(one);
    one.addAll(temp);
    one.retainAll(three);
    interQrels.addAll(one);
    one.addAll(temp);
    one.retainAll(four);
    interQrels.addAll(one);
    one.addAll(temp);

    interQrels.retainAll(two);
    interQrels.retainAll(three);
    interQrels.retainAll(four);
}

解决方法

我想你可以简单地在第一组上调用retainAll(),使用第二,第三和第四组作为参数:
private static Set<String> getIntersectionSet() {
    // create a deep copy of one (in case you don't wish to modify it)
    Set<String> interQrels = new HashSet<>(one);

    interQrels.retainAll(two);     // intersection with two (and one)
    interQrels.retainAll(three);   // intersection with three (and two,one)
    interQrels.retainAll(four);    // intersection four (and three,two,one)

    return interQrels;
}
原文链接:https://www.f2er.com/java/123709.html

猜你在找的Java相关文章