从交集java获取第一个元素

时间:2014-02-24 16:10:12

标签: java hashset

我有两个HashSet s:

a = [10,9,8,7,6,5,4,3,2,1]

b = [1,3,7,9]

我通过

得到了他们的路口
b.retainAll(a);

但是我希望以a的顺序得到交集,即我想要集合a中的第一个元素b。当前示例应返回9.

我如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

使用保持元素顺序的LinkedHashSet。然后拨打a.retainAll(b);

示例代码:

Set<Integer> a = new LinkedHashSet<Integer>() {
    {
        for (int i = 10; i > 0; i--) {
            add(i);
        }
    }
};

Set<Integer> b = new LinkedHashSet<Integer>() {
    {
        add(1);
        add(3);
        add(7);
        add(9);
    }
};

a.retainAll(b);

执行上面的代码后,set a的内容如下:

  

[9,7,3,1]

答案 1 :(得分:1)

  

我想要集合a中的第一个元素出现在集合b中。该   当前示例应返回9.

如果您需要订单,Set,使用ArrayListLinkedHashSet都没有订单。

LinkedHashSet:

  

使用Set接口的哈希表和链表实现   可预测的迭代顺序。