我有这个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
答案 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被排序。