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

时间:2018-06-19 12:24:50

标签: java arraylist

我想比较两个列表并检查它们是否相同。

示例

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 个答案:

答案 0 :(得分:1)

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

差异将是重复元素的数量。

答案 1 :(得分:1)

尝试:

ArrayList intersection = new ArrayList<>(list1);
intersection.retainAll(list2);

交叉点将包含公共元素

答案 2 :(得分:0)

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

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;
}

答案 3 :(得分:0)

使用以下代码:

    Set<String> set =  new HashSet<>(list1);
    set.addAll(list2);
    System.out.println(((list1.size() + list2.size()) - set.size()));