题解 | #成绩排序#

成绩排序

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

全部评论

相关推荐

皮格吉:不,有的厂子面试无手撕,可以试试。都是一边学一边面。哪有真正准备好的时候,别放弃
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务