题解 | #合并表记录#
合并表记录
http://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
import java.util.*;
public class Main{
public static void main(String [] args){
//Map自带的方法containsKey()
/*Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
Map<Integer,Integer> map=new HashMap<>(n);
for(int i=0;i<n;i++){
int a=sc.nextInt();
int b=sc.nextInt();
if(map.containsKey(a)){
map.put(a,map.get(a)+b);
}else{
map.put(a,b);
}
//map.put(sc.nextInt(),sc.nextInt());
}
for(Integer a:map.keySet()){
System.out.println(a+" "+map.get(a));
}
}*/
/*==========================================*/
//使用HashMap自带的getOrDefault(key,default)方法,获取键key的值,key不存在则默认default
/*Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
//Map<Integer,Integer> map=new HashMap<Integer,Integer>();//不加初始化容量大小,输出结果无序
Map<Integer,Integer> map=new HashMap<>(n);
//Map<Integer,Integer> map=new TreeMap<>();//TreeMap有序
for(int i=0;i<n;i++){
int key=sc.nextInt();
int value=sc.nextInt();
map.put(key,map.getOrDefault(key,0)+value);
}
//打印输出map
//1.map.keySet()
for(Integer key:map.keySet()){
System.out.println(key+" "+map.get(key));
}
//2.while循环(Iterator+map.keySet())
Set<Integer> set=map.keySet();
Iterator<Integer> it=set.iterator();
while(it.hasNext()){
Integer key=it.next();
System.out.println(key+" "+map.get(key));
//System.out.println(it.next()+" "+map.get(it.next()));错误,it.next()获取元素值,key和值对不上
}
//3.while循环(Iterator + Map.Entry<Key, Value>)
Iterator<Map.Entry<Integer,Integer>> it=map.entrySet().iterator();
while(it.hasNext()){
Map.Entry<Integer,Integer> entry=it.next();
System.out.println(entry.getKey()+" "+entry.getValue());
}
//4.for循环(Iterator+Map.Entry<key,value>)
for(Iterator<Map.Entry<Integer,Integer>> it=map.entrySet().iterator();it.hasNext();){
Map.Entry<Integer,Integer> entry=it.next();
System.out.println(entry.getKey()+" "+entry.getValue());
}
//5.forEach()+Map.Entry<Key,Value>
for(Map.Entry<Integer,Integer> entry : map.entrySet()){
System.out.println(entry.getKey()+" "+entry.getValue());
}
}*/
/*=================================================*/
//每次循环向map中出入元素时,检查该key是否存在map中
Scanner sc=new Scanner(System.in);
Map<Integer,Integer> map=new TreeMap<>();
while(sc.hasNext()){
int n=sc.nextInt();
for(int i=0;i<n;i++){
int key=sc.nextInt();
int value=sc.nextInt();
if(map.get(key)!=null){
map.put(key,map.get(key)+value);
}else{
map.put(key,value);
}
}
//for(Map.Entry<Integer,Integer> entry:map.entrySet()){////entry包含key value值
//System.out.println(entry.getKey()+" "+entry.getValue());
//}
//for(Integer i:map.keySet()){
//System.out.println(i+" "+map.get(i));
//}
Set<Integer> set=map.keySet();
Iterator<Integer> it=set.iterator();
while(it.hasNext()){
Integer key=it.next();
System.out.println(key+" "+map.get(key));
}
}
}
}

