题解 | #成绩排序#
成绩排序
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()); } } } }