为了账号安全,请及时绑定邮箱和手机立即绑定

两个列表中的公共元素

两个列表中的公共元素

森林海 2019-07-15 16:51:19
两个列表中的公共元素我有两个ArrayList对象,每个对象具有三个整数。我想找到一种方法来返回这两个列表的共同元素。有谁知道我怎么做到的吗?
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

使用Java 8Stream.filter()结合法List.contains():

import static java.util.Arrays.asList;

import static java.util.stream.Collectors.toList;


/* ... */


List<Integer> list1 = asList(1, 2, 3, 4, 5);

List<Integer> list2 = asList(1, 3, 5, 7, 9);


List<Integer> common = list1.stream().filter(list2::contains).collect(toList());


查看完整回答
1 反对 回复 2019-07-15
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

使用Collection#retainAll().

listA.retainAll(listB);// listA now contains only the elements which are also contained in listB.

如果您想避免更改会在listA,然后你需要创建一个新的。

List<Integer> common = new ArrayList<Integer>(listA);common.retainAll(listB);
// common now contains only the elements which are contained in listA and listB.


查看完整回答
反对 回复 2019-07-15
?
Qyouu

TA贡献1786条经验 获得超11个赞

您可以在您的ArrayList物品。


就像这样:


List<Integer> l1 = new ArrayList<Integer>();


l1.add(1);

l1.add(2);

l1.add(3);


List<Integer> l2= new ArrayList<Integer>();

l2.add(4);

l2.add(2);

l2.add(3);


System.out.println("l1 == "+l1);

System.out.println("l2 == "+l2);


List<Integer> l3 = new ArrayList<Integer>(l2);

l3.retainAll(l1);


    System.out.println("l3 == "+l3);

    System.out.println("l2 == "+l2);

现在,l3之间应该只有共同的元素l1和l2.


CONSOLE OUTPUT

l1 == [1, 2, 3]

l2 == [4, 2, 3]

l3 == [2, 3]

l2 == [4, 2, 3]


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 696 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号