牛客网-华为机试-合并表记录

注意:这题的重点是千万不要用spilt以空格分隔,会报数组越界异常

题目描述

数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。

输入描述:

先输入键值对的个数
然后输入成对的index和value值,以空格隔开

输出描述:

输出合并后的键值对(多行)

示例1

输入

4
0 1
0 2
1 2
3 4

输出

0 3
1 2
3 4
import java.util.*;
public class Main{
    
    public static void handler(Map<String,Integer> map, String key, Integer val) {
//         String[] arrays = line.split(" ");
//         String key = arrays[0];
//         int val = Integer.parseInt(arrays[1]);
        if(map.containsKey(key)) {
            val += map.get(key);
        }
        map.put(key, val);
    }
    
    public static void print(Map<String,Integer> map) {
        Set<String> keySet = map.keySet();
        for(String key : keySet) {
            System.out.println(key + " " + map.get(key));
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count;
        Map<String, Integer> map = new TreeMap<>();
        while(sc.hasNext()) {
            count = sc.nextInt();
            while(count-- > 0) {
                handler(map, String.valueOf(sc.nextInt()), sc.nextInt());
            }
        }
        sc.close();
        print(map);
    }
}
原文地址:https://www.cnblogs.com/zhouquan-1992-04-06/p/13799916.html