我有两个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.
我如何实现这一目标?
答案 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
,使用ArrayList
或LinkedHashSet
都没有订单。
LinkedHashSet:
使用Set接口的哈希表和链表实现 可预测的迭代顺序。