排序数组在 Java 中的数组列表

2022-09-03 16:49:06

在Java中对进行排序的最佳方法是什么?ArrayList<String[]>

在哪里。。。String[]

String[] strAarray = new String[] { "abc", "abc", "abc", "abc", "abc", "abc", "abc" };

现在我想按(索引 1 处)的第 2 个值对整个 ArrayList 进行排序。我需要在索引 1 处遍历它的每一个子项。String[]String[]

有什么想法吗?

编辑:


我有更多的描述。我实际上是从一些XML文件中获取学校,XML中的每个节点都有7个属性。现在我正在创建一个ArrayList,它从XML保存这些学校节点,并且它本身保存特定节点的属性。String[]String[] strArray

现在,我想对它进行排序的方式是,它应该根据学校的状态进行排序,这是XML中的第2个属性,也是ArrayList中的索引1。String[]

我需要首先遍历每个学校(XML中的节点,Java),然后我必须过滤状态(XML中的状态属性,Java)。String[]String[1]


答案 1

Collections.sort 开始,这是一个需要自定义比较器的比较器。您还需要为此编写一个自定义比较器

例如,假设您希望依赖于其 compareTo 方法中定义的字符串的自然排序:

public static void main(String[] args) throws Exception {
        ArrayList<String[]> listOfStringArrays = new ArrayList<String[]>();
        listOfStringArrays.add(new String[] {"x","y","z"});
        listOfStringArrays.add(new String[] {"a","b","c"});
        listOfStringArrays.add(new String[] {"m","n","o"});
        Collections.sort(listOfStringArrays,new Comparator<String[]>() {
            public int compare(String[] strings, String[] otherStrings) {
                return strings[1].compareTo(otherStrings[1]);
            }
        });
        for (String[] sa : listOfStringArrays) {
            System.out.println(Arrays.toString(sa));
        }
        /* prints out 
          [a, b, c]
          [m, n, o]
          [x, y, z]
        */ 

    }

答案 2

你创建一个这样的:Comparator<String[]>

new Comparator<String[]>() {
  public int compare(String[] first, String[] second) {
    return first[1].compareTo(second[1]);
  }
}

然后将其传递给 。Collections.sort()

您可能需要对数组中是否确实存在第二个元素进行一些检查。如果标准字符串比较不够,您还可以进行自定义比较。