Java按字母顺序对ArrayList中的ArrayList进行排序

时间:2019-03-11 20:53:21

标签: java arrays sorting arraylist

我有这个ArrayList,其中包含其他ArrayLists

原始[[EHM, Evans, 45], [AB, Evans, 63], [J, Jones, 72], [RA, Jones, 85], [B, Smith, 55]]

我想按字母顺序对ArrayList进行排序,以提供此输出

所需[[AB, Evans, 63], [B, Smith, 55], [EHM, Evans, 45], [J, Jones, 72], [RA, Jones, 85]]

此数据基于我正在导入的文本文件,因此可能会更改。我想比较每个ArrayList中的位置0并按字母顺序排序。目前,原始列表位于变量“ multiMarkArray”中

我将如何使用Java进行此操作?

感谢您的任何输入-Phil

2 个答案:

答案 0 :(得分:1)

好的干净的方法是这样的:

// [[EHM, Evans, 45], [AB, Evans, 63]
List<List<String>> input = new ArrayList<>();
List<String> subInput;
subInput = new ArrayList<>();
subInput.add("EHM");
subInput.add("Evans");
subInput.add("45");
input.add(subInput);
subInput = new ArrayList<>();
subInput.add("AB");
subInput.add("Evans");
subInput.add("63");
input.add(subInput);

Collections.sort( input, (a,b) -> a.get(0).compareTo(b.get(0)) );
System.out.println(input);

答案 1 :(得分:0)

您可以使用TreeSet的TreeSet。

TreeSet<TreeSet<String>> set = new TreeSet<>((s1, s2) -> s1.first().compareTo(s2.first()));
Set<String> subset1 = new TreeSet<>();
subset1.add("EHM");
subset1.add("Evans");
subset1.add("45");
Set<String> subset2 = new TreeSet<>();
subset2.add("AB");
subset2.add("Evans");
subset2.add("43");
set.add(subset1);
set.add(subset2);

TreeSet被排序。