数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
while(in.hasNext()){
int n=in.nextInt();
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i=0;i<n;i++){
int key= in.nextInt();
int value=in.nextInt();
if(map.containsKey(key)){
map.put( key,map.get(key)+value);
}
else{
map.put(key,value);
}
}
for(Integer key1:map.keySet()){
System.out.print(key1+" ");
System.out.println(map.get(key1));
}
}
}
}
注意:1、map对象的使用,键值对;HashMap与treemap区别,用treemap更加精准;
Map containsKey(String Key)
判断key有没有对应的value值;
有,则返回true
没有,则返回false
判断key有没有对应的value值;
有,则返回true
没有,则返回false
2、增强for循环的使用
}
3、
Set entrys=map.entrySet();
if(entrys!=null){
Iterator it = entrys.iterator();
while(it.hasNext()){
Map.Entry<Integer,Integer> entry=(Entry<Integer,Integer>) it.next();
System.out.println(entry.getKey()+" "+entry.getValue());
if(entrys!=null){
Iterator it = entrys.iterator();
while(it.hasNext()){
Map.Entry<Integer,Integer> entry=(Entry<Integer,Integer>) it.next();
System.out.println(entry.getKey()+" "+entry.getValue());
用map里的entrySet也可以遍历所有的键值和值。
4、但用
Set keys
=
map
.keySet();
if(keys != null){
Iterator it =keys .iterator();
while(it .hasNext()){
Object key =it .next();
Object value = map .get(key);
System .out .println(key + "," +value);
}
此方法结果不对!
if(keys != null){
Iterator it =keys .iterator();
while(it .hasNext()){
Object key =it .next();
Object value = map .get(key);
System .out .println(key + "," +value);
}
此方法结果不对!
增强for循环是遍历的最好的方法。