Java: Сортировка списка строк по числу, содержащемуся в этой строке (по убыванию)

-9

У меня есть.txt файл имен людей и оценка, которую они достигают в игре, например.

2 John
6 Matt
etc.

Я пытаюсь организовать их в порядке, у кого самый высокий балл (номер рядом с их именем). Я мог бы использовать подстроку, чтобы получить целое число, а затем Collections.sort но тогда я не уверен, как бы связать это с именами.

Если у кого-нибудь есть умные идеи, пожалуйста, помогите! В настоящее время у меня есть все, чтобы все оценки/имена были прочитаны в ArrayList, например: {2 John, 3 Matt}

спросил(а) 2021-01-19T15:47:54+03:00 6 месяцев назад
1
Решение
135

Вы могли бы просто реализовать собственный Comparator<String> и разделить на первое пространство (ограничьте разделение на 2). Я также предположил, что связки должны быть упорядочены лексически (в алфавитном порядке). Подобно,

List<String> al = new ArrayList<>(Arrays.asList("2 John", //
"3 Matt", "3 Adam Smith"));
al.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String[] a = o1.split("\\s+", 2); // <-- split on white space, limit 2.
String[] b = o2.split("\\s+", 2);
int r = Integer.compare(Integer.parseInt(a[0]), //
Integer.parseInt(b[0]));
if (r != 0) {
return -r;
}
return a[1].compareTo(b[1]);
}
});
System.out.println(al);

Какие результаты (как я думаю, вы хотели)

[3 Adam Smith, 3 Matt, 2 John]

ответил(а) 2021-01-19T15:47:54+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема