版权声明:博客内容为本人自己所写,请勿转载。 https://blog.csdn.net/weixin_42805929/article/details/82825906
合并表记录 java
题目描述
数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
输入描述:
先输入键值对的个数
然后输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
示例1
输入
4
0 1
0 2
1 2
3 4
输出
0 3
1 2
3 4
代码1:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws Exception {
// InputStreamReader--字节输入流的所有类的超类
InputStreamReader isr = new InputStreamReader(System.in);
// BufferedReader--从字符输入流中读取文本
BufferedReader br = new BufferedReader(isr);
// n为键值对的个数
int n = Integer.parseInt(br.readLine());
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
String[] s = br.readLine().split(" ");
int key = Integer.parseInt(s[0]);
int value = Integer.parseInt(s[1]);
// 判断Map集合对象中是否包含指定的键名
if (map.containsKey(key)) {
map.put(key, map.get(key) + value);
} else {
map.put(key, value);
}
}
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}
代码2:推荐使用–TreeMap是按序排列,并且不允许有null键和值
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
TreeMap<Integer, Integer> map = new TreeMap<>();
for(int i = 0; i < n; i++){
String[] s = br.readLine().split(" ");
int key = Integer.parseInt(s[0]);
int value = Integer.parseInt(s[1]);
if(map.containsKey(key)) {
map.put(key, map.get(key) + value);
} else {
map.put(key, value);
}
}
for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}