统计数字时间限制: 10000ms内存限制: 65536kB
描述某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
输入输入文件count.in包含n+1行;
第一行是整数n,表示自然数的个数;
第2n+1每行一个自然数。
输出输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
样例输入8
2
4
2
4
5
100
2
100
样例输出2 3
4 2
5 1
100 2
提示40%的数据满足:1<=n<=1000
80%的数据满足:1<=n<=50000
100%的数据满足:1<=n<=200000,每个数均不超过1500 000 000(1.5*109)
参考代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader cin = new BufferedReader( new InputStreamReader(System.in));
		int cases = Integer.parseInt(cin.readLine());
		Map<Integer,Integer> map = new TreeMap<Integer,Integer>();
		while(cases > 0){
			int n = Integer.parseInt(cin.readLine());
			if(map.containsKey(n)){
				int v = map.get(n) + 1;
				map.put(n,v);
			}else{
				map.put(n,1);
			}
			cases --;
		}
		Set<Integer>set = map.keySet();
		Iterator<Integer>it = set.iterator();
		while(it.hasNext()){
			int n = it.next();
			int v = map.get(n);
			System.out.println(n+" "+v);
		}
	}
}