java - 如何按字母顺序对列表列表的第一个元素进行排序?

标签 java list sorting

首先,我希望程序执行的操作是按每个列表的第一个元素按字母顺序对列表进行排序。 然后将它们排序回原来的顺序。 代码如下。

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/

相关文章:

java - 检索到的数据库数据出现交叉脚本错误

java - 从 Spring 渲染 View 时出现 StackOverFlowError

java - Intellij idea,无法使Maven工作

C++ - 读取 1000 个 float 并通过仅保留最低的 10 个数字将它们插入大小为 10 的 vector 中

javascript - 根据值中的文本将数组拆分为小数组

python - 如何对字符串和 int 值数组、按字母顺序和 "reversed"字母顺序的多个属性进行排序

java - 如何允许 ArrayList 删除添加的对象而不覆盖或使其不可变

python - 如何根据另一个变量的值调用列表中的元素?

Python 使用对象列表迭代对象

c++ - emplace_back 在 vector 中而不是在列表中调用赋值运算符