Java в алфавитном порядке сортировать ArrayLists внутри ArrayList - PullRequest
0 голосов
/ 11 марта 2019

У меня есть ArrayList, который содержит другие ArrayList

Оригинал: [[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]]

Эти данные основаны на текстовом файле, который я импортирую, поэтому может измениться. Я хочу сравнить позицию 0 в каждом ArrayList и сортировать по алфавиту. В настоящее время исходный список находится в переменной 'multiMarkArray'

Как бы я поступил так на Java?

Спасибо за любой вклад - Фил

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Хороший и чистый способ сделать это:

// [[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);
0 голосов
/ 12 марта 2019

Вы можете использовать TreeSet из TreeSets.

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);

TreeSets отсортированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...