我想比较两个列表并检查它们是否相同。
示例
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");
并返回在最短和最佳的过程中有多少个项目具有相同的值。
答案 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()));