华为OJ 初级:合并表记录

来源:互联网 发布:开源 php客服系统源码 编辑:程序博客网 时间:2024/05/05 16:09

描述

数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和

 

函数说明:

public int mergeRecord(List oriList, List rstList)

数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和。


 @param oriList 原始表记录。 以List方式存放,TableRecord定义见TableRecord.java,

                调用者无需对leRecord.java做任何修改
 @param rstList 合并后的表记录 , 以List方式存放
 @return  返回合并后表的个数

 

 

知识点栈运行时间限制10M内存限制128输入

先输入键值对的个数
然后输入成对的index和value值,以换行符隔开

输出

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

样例输入4 0 1 0 2 1 2 3 4样例输出0 3 1 2 3 4
/** * 思路:合并表记录,由于记录是由键值对组成的,所以首先想到的是可以存储键值对的Map *    Map中有HashMap与TreeMap,但是要保持输入时的顺序,而TreeMap会按照key的值进行排序,所以选择HashMap *    HashMap的key是唯一的,所以当输入的key和HahMap中已有的key相等时,把该key对应的value和输入的value值相加即可 **/import java.util.HashMap;import java.util.Map;import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();    //需要输入的键值对数HashMap<Integer, Integer> hasMap = new HashMap<>(); //定义HashMapfor (int i = 0; i < n; i++) {int keys = scanner.nextInt();    //输入keyint values = scanner.nextInt();  //输入valueint temp = 0;if (hasMap.containsKey(keys)) {  //当输入的key是HashMap中已有的key时temp = hasMap.get(keys) + values;  //把该key对应的value和输入的value相加hasMap.put(keys, temp);}else {hasMap.put(keys, values); //当不是已有的key时,直接输入key和value}}scanner.close();forEach(hasMap.entrySet());}static void forEach(Iterable<Map.Entry<Integer, Integer>> iterable){ //定义方法答应key和value的值for(Map.Entry<Integer, Integer> entry : iterable){System.out.println(entry.getKey());System.out.println(entry.getValue());}}}



0 0