题解 | #合并表记录#

合并表记录

https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.*;
 
public class Main{
    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);
        int size = sc.nextInt();
        HashMap<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < size; i++){
            int index = sc.nextInt();
            int value = sc.nextInt();
            map.put(index, map.getOrDefault(index, 0)+value);
        }
        ArrayList<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>(){
            public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2){
                return o1.getKey()-o2.getKey();
            }
            
        } );
        for(Map.Entry<Integer, Integer> entry : list){
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
    }
}
关键在于对map的排序,有两个方法
1.使用TreeMap代替HashMap
2.将HashMap中的entrySet取出到List中,再进行排序
全部评论

相关推荐

头像
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务