1>题目描述
- 题目描述:
- 数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
- 输入描述:
- 先输入键值对的个数然后输入成对的index和value值,以空格隔开。
- 输出描述:
- 输出合并后的键值对(多行)。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2861faf2054fcdbae4b1e5ed0ccc4993.png)
2>解法
- key要升序且唯一,value对应相同的key时候值要合并,很明显使用TreeMap合适。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
Map<Integer,Integer> map = new TreeMap<>();
for(int i=0;i<n;i++){
int key = scanner.nextInt();
int value = scanner.nextInt();
if(map.containsKey(key)){
map.replace(key,map.get(key)+value);
}
else{
map.put(key,value);
}
}
Set<Map.Entry<Integer,Integer>> set = map.entrySet();
Iterator<Map.Entry<Integer,Integer>> ite = set.iterator();
while(ite.hasNext()){
Map.Entry<Integer,Integer> node = ite.next();
int key = node.getKey();
int value = node.getValue();
System.out.println(key+" "+value);
}
}
}