首先,我希望程序执行的操作是按每个列表的第一个元素按字母顺序对列表进行排序。 然后将它们排序回原来的顺序。 代码如下。
ArrayList<ArrayList<String>> mylist = new ArrayList<ArrayList<String>>();
List<String> List1 = new ArrayList<String>();
List<String> List2 = new ArrayList<String>();
List<String> List3 = new ArrayList<String>();
List1.add("A");
List2.add("B");
List3.add("A");
List1.add("C");
List2.add("D");
List3.add("E");
mylist.add((ArrayList<String>) List1);
mylist.add((ArrayList<String>) List2);
mylist.add((ArrayList<String>) List3);
System.out.println(mylist.toString());
此时的打印是:
[[A, C], [B, D], [A, E]]
我想对它们进行排序,结果如下:
[[A, C], [A, E], [B, D]]
然后能够将它们排序回原来的形式:
[[A, C], [B, D], [A, E]]
最佳答案
您可以使用自定义 Comparator
对列表进行排序.如果您使用的是 Java 8,您可以这样做:
mylist.sort((l1, l2) -> l1.get(0).compareTo(l2.get(0)));
请注意,这会修改原始列表,但无法反转排序。相反,您应该创建一个副本并对副本进行排序。
例如:
List<List<String>> listToSort = new ArrayList<>(mylist);
listToSort.sort((l1, l2) -> l1.get(0).compareTo(l2.get(0)));
System.out.println(listToSort);
输出:
[[A, C], [A, E], [B, D]]
注意:
如果您使用的是 Java 7 及更低版本,您应该使用 Collections.sort()
并创建一个显式的 Comparator
。
关于java - 如何按字母顺序对列表列表的第一个元素进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29417758/