检查这两个列表是否相等的通用且最简单的方法是什么:
List<String[]> list1=new ArrayList<String[]>();
String[] s1={"1","2"};
String[] s2={"3","4"};
list1.add(s1);
list1.add(s2);
List<String[]> list2=new ArrayList<String[]>();
String[] s3={"1","2"};
String[] s4={"3","4"};
list2.add(s3);
list2.add(s4);
互联网上的一些解决方案建议使用 Collections.sort
Collections.sort(list1);
Collections.sort(list2);
if(list1.equals(list2)){
System.out.println("true");
}
else{
System.out.println("false");
}
但它打印出“false”
其他建议使用 containsAll
if(list1.containsAll(list2)){
System.out.println("true");
}
else{
System.out.println("false");
}
但它也打印出“false”
似乎上述 2 个解决方案仅适用于 List 但不适用于 List<String[]>
甚至更复杂 List<List<String[]>>
那么是否有任何通用的方法来检查任何 2 个列表是否相等。
最佳答案
boolean isEqual=Arrays.deepEquals(list1.toArray(), list2.toArray());
也是返回true
对于 List<String[][]>
, 例如
List<String[][]> list1 = new ArrayList<String[][]>();
String[][] s1 = {{"1", "2"}, {"1", "2"}};
String[][] s2 = {{"3", "4"}, {"3", "4"}};
list1.add(s1);
list1.add(s2);
List<String[][]> list2 = new ArrayList<String[][]>();
String[][] s3 = {{"1", "2"}, {"1", "2"}};
String[][] s4 = {{"3", "4"}, {"3", "4"}};
list2.add(s3);
list2.add(s4);
boolean isEqual = Arrays.deepEquals(list1.toArray(), list2.toArray());
System.out.println(isEqual);//will print true.
根据 docs ,
- Returns true if the two specified arrays are deeply equal to one another. Unlike the equals(Object[],Object[]) method, this method is appropriate for use with nested arrays of arbitrary depth.
关于java - 是否有任何通用且最简单的方法来检查 String[] 或 String[][] 的任何 2 个列表是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20369545/