题解 | #成绩排序#
成绩排序
https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int sort = scanner.nextInt();
// 本题的名字可重复,不可作为key。key为成绩且不重复,value为该成绩的所有名字。
Map<Integer, List<String>> map = new LinkedHashMap<>();
// 录入数据
for (int i = 0; i < n; i++) {
String value = scanner.next();
int key = Integer.parseInt(scanner.next());
List<String> list = map.getOrDefault(key, new ArrayList<>());
list.add(value);
map.put(key, list);
}
// 根据成绩排序
map = map.entrySet().stream().sorted((entry1, entry2) -> {
if (sort == 1) {
return entry1.getKey() - entry2.getKey();
} else {
return entry2.getKey() - entry1.getKey();
}
}).collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(integer, integer2) -> integer2,
LinkedHashMap::new)
);
// 输出数据
for (Map.Entry<Integer, List<String>> entry : map.entrySet()) {
List<String> list = entry.getValue();
for (String name : list) {
System.out.println(name + " " + entry.getKey());
}
}
}
}

查看14道真题和解析