用Java实现WordCount

题目

有一个文件,里面每一行都是一个IP地址,要对所有IP进行统计,并按降序排列。(先不考虑内存不够的情况)

思路

这个题,在不考虑内存不够的情况下,其实是很简单的,主要涉及到的知识点有两个:
    * Java IO
    * Comparator
先看代码然后来看知识点

代码

 public static void wordCountAndSort() throws IOException {
        Map map = new HashMap();
        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> list = new ArrayList>(map.entrySet());
        Collections.sort(list, new Comparator>() {
            public int compare(Map.Entry o1, Map.Entry o2) {
                return o2.getValue().compareTo(o1.getValue());
            }
        });
    }

Java IO

参考http://blog.csdn.net/yczz/article/details/38761237

Comparator比较器

参考http://blog.csdn.net/tolcf/article/details/52229068

你可能感兴趣的:(算法,java)