JAVAの2つの集合が等しいかどうかをすばやく比較
2292 ワード
いくつかの方法があります.
1)順序を気にせず内容が同じであれば等しいと考える場合:
LISTに重複する要素がない場合は、次のことができます.
ただし、繰り返しがある場合は、次のような方法ではいけません.
1)順序を気にせず内容が同じであれば等しいと考える場合:
public > boolean isEquals(List list1, List list2){
if (list1 == null && list2 == null) {
return true;
}
//Only one of them is null
else if(list1 == null || list2 == null) {
return false;
}
else if(list1.size() != list2.size()) {
return false;
}
//copying to avoid rearranging original lists
list1 = new ArrayList(list1);
list2 = new ArrayList(list2);
Collections.sort(list1);
Collections.sort(list2);
return list1.equals(list2);
}
LISTに重複する要素がない場合は、次のことができます.
public > boolean isEquals(List list1, List list2){
if (list1 == null && list2 == null) {
return true;
}
//Only one of them is null
else if(list1 == null || list2 == null) {
return false;
}
else if(list1.size() != list2.size()) {
return false;
}
Set set1 = new TreeSet<>(list1);
Set set2 = new TreeSet<>(list2);
return set1.equals(set2);
}
ただし、繰り返しがある場合は、次のような方法ではいけません.
List list1 = Arrays.asList(
1
,
2
,
3
,
3
);
List list2 = Arrays.asList(
3
,
1
,
2
,
2
);
System.out.println(list1.isEquals(list2));
, , , apache common :
List list1 = Arrays.asList(
1
,
2
,
3
,
3
);
List list2 = Arrays.asList(
3
,
1
,
3
,
2
);
System.out.println(CollectionUtils.isEqualCollection(list1, list2));
//true