java - 是否有任何通用且最简单的方法来检查 String[] 或 String[][] 的任何 2 个列表是否相等?

标签 java list

检查这两个列表是否相等的通用且最简单的方法是什么:

            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 个列表是否相等。

最佳答案

使用Arrays.deepEquals

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/

相关文章:

c# - 以自定义方式对列表中的项目进行排序

c# - 如何在 Visual Studio C# 中正确公开 List<object> 属性?

c - 向列表添加 1 个字符时出现无限循环

java - 导入 Eclipse 的 Maven 项目出现错误 "No GWT module found"

java - 使用 DOM 解析时如何识别 xml 结束标记?

javascript - WebDriver 下拉菜单不会保持打开状态

python - 将 python 列表投影到现有值上(使用生成器的生成器)

list - Erlang 列出了超过 8 的单个数字?

java - 将java中的时间调整为前一小时边界

java - Itext5 程序在 Windows 上执行时遇到字符集问题?