题目
有一个文件,里面每一行都是一个IP地址,要对所有IP进行统计,并按降序排列。(先不考虑内存不够的情况)
思路
这个题,在不考虑内存不够的情况下,其实是很简单的,主要涉及到的知识点有两个:
* Java IO
* Comparator
先看代码然后来看知识点
代码
public static void wordCountAndSort() throws IOException {
Map<String, Integer> map = new HashMap<String, Integer>();
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream((new File("", "utf-8")))));
//每行一个IP,则统计
String s = null;
while((s=reader.readLine()) != null){
if (!map.containsKey(s))
map.put(s, 1);
else
map.put(s, map.get(s)+1);
}
//排序。将Map转为list,然后进行sort
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
}
Java IO
参考http://blog.csdn.net/yczz/article/details/38761237