题目
参考题解
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
st.nextToken(); // 分隔符
int n = (int) st.nval; // 强转
int[] arr = new int[11111112];
for (int i = 0; i < n; i++) {
st.nextToken();
int key = (int) st.nval;
st.nextToken();
int value = (int) st.nval;
arr[key] = arr[key] + value;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length ; i++) {
if(arr[i] != 0){
sb.append(i).append(" ").append(arr[i]).append("\n");
}
}
System.out.println(sb.toString());
}
}
总结:
1、以前那种数组下边代替map的方式在这里优势不明显了、因为可以很随意设置
2、新的获取值得方式
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
st.nextToken(); // 分隔符
int n = (int) st.nval; // 强转
我组合的题解
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
st.nextToken(); // 分隔符
int n = (int) st.nval; // 强转
TreeMap<Integer, Integer> map = new TreeMap<>();
for (int i = 0; i < n; i++) {
st.nextToken();
int key = (int) st.nval;
st.nextToken();
int value = (int) st.nval;
if (map.containsKey(key)) {
map.put(key, map.get(key) + value);
} else {
map.put(key, value);
}
}
for (int e : map.keySet()) {
System.out.println(e + " " + map.get(e));
}
}
}
总结:
1、 要去学习一下StreamTokenizer
2、Map的基础方法需要复习巩固一下