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

Java-比较两个具有共同值的字符串列表,并返回多少个相同项

Java-比较两个具有共同值的字符串列表,并返回多少个相同项

慕田峪9158850 2021-04-10 08:55:53
我想比较两个列表,并检查它们是否有共同点。例子List<String> list1 = new ArrayList();list1.add("id1");list1.add("id2");list1.add("id3");list1.add("id10");List<String> list2 = new ArrayList();list2.add("id10");list2.add("id20");list2.add("id3");list2.add("id30");list2.add("id31");并返回在最短和最佳的过程中有多少个项目具有相同的值。
查看完整描述

4 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

一种方法是,将两个列表中的元素放入Set,检查是否set.size()list1.size()+list2.size()

diff将是重复元素的计数。


查看完整回答
反对 回复 2021-04-14
?
弑天下

TA贡献1818条经验 获得超8个赞

试试这个 :


ArrayList intersection = new ArrayList<>(list1);

intersection.retainAll(list2);

相交处将包含共同要素


查看完整回答
反对 回复 2021-04-14
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

使用以下代码:


    Set<String> set =  new HashSet<>(list1);

    set.addAll(list2);

    System.out.println(((list1.size() + list2.size()) - set.size()));


查看完整回答
反对 回复 2021-04-14
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

我不知道这是否是最有效的方法,但我会做这样的事情:


public static int getCommonValues() {

    int values = 0;

    if(list1 != null && list2 != null) {

        Iterator it = list1.iterator();


        while(it.hasNext()) {

            String value = it.next();


            Iterator it2 = list2.iterator();

            while(it2.hasNext()) {

                String value2 = it2.next();


                if(value2 == value) {

                    values = values + 1;

                    break;

                }

            }

        }

    }

    return values;

}


查看完整回答
反对 回复 2021-04-14
  • 4 回答
  • 0 关注
  • 368 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信