合并表记录
数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String num = sc.nextLine();
List<String> paramList = new ArrayList<String>();
for (int i =0; i<Integer.valueOf(num); i++){
String param = sc.nextLine();
paramList.add(param);
}
// 存储key和value
List<Integer> keyList = new ArrayList<Integer>();
List<Integer> valueList = new ArrayList<Integer>();
for(int i = 0;i< paramList.size();i++){
String[] arr = paramList.get(i).split(" ");
keyList.add(Integer.valueOf(arr[0]));
valueList.add(Integer.valueOf(arr[1]));
}
// 整理数据
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for(int i =0; i<keyList.size();i++){
if(!map.containsKey(keyList.get(i))){
map.put(keyList.get(i), valueList.get(i));
}else{
int value = map.get(keyList.get(i));
value += valueList.get(i);
map.put(keyList.get(i), value);
}
}
// 存储key
List<Integer> list = new ArrayList<Integer>();
for(Integer key : map.keySet()){
list.add(key);
}
// 处理key
for(int i=0; i<list.size(); i++){
for(int j=0; j<i;j++){
if(list.get(i)<list.get(j)){
int tmp = list.get(i);
list.set(i, list.get(j));
list.set(j, tmp);
}
}
}
for(int i=0;i<list.size();i++){
System.out.println(list.get(i)+ " "+ map.get(list.get(i)));
}
}
}