描述 | |
---|---|
知识点 | 栈 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 |
先输入键值对的个数 |
输出 |
输出合并后的键值对(多行) |
样例输入 | 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<>(); //定义HashMap
for (int i = 0; i < n; i++) {
int keys = scanner.nextInt(); //输入key
int values = scanner.nextInt(); //输入value
int 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());
}
}
}