从apache访问日志生成流量统计信息

时间:2017-05-23 05:38:36

标签: java algorithm data-structures

我有以下几行日志说,

"[123456] /stream 200", "[45678] /chatty 200", "[123456] /stream 400", "[123456] /text 200"

我需要生成流量统计信息(关于每秒最多点击哪个端点)。在这种情况下,输出将是。

123456  /stream
45678   /chatty

我用Java编写了以下代码。基本上我的数据结构代表{"Timestamp": {"endpoint" : count}}

public class LogParser {


    private static void solve(String [] lines) {
        Map<String, Map<String, Integer>> map = new HashMap<>();
        Map<String, Integer> urlMap = null;
        int size = lines.length;
        for (int i=0; i<size; i++) {
            String [] data = lines[i].split(" ");
            if (map.containsKey(data[0])) {
                urlMap = map.get(data[0]);
            } else {
                urlMap = new HashMap<>();
            }
            if (urlMap.containsKey(data[1])) {
                urlMap.put(data[1], urlMap.get(data[1])+1);
            } else {
                urlMap.put(data[1], 1);
            }
            map.put(data[0], urlMap);
        }
        System.out.println(map.toString());

    }
    public static void main(String[] args) {
            String [] lines = {"[123456] /stream 200", "[45678] /chatty 200", "[123456] /stream 400", "[123456] /text 200"};
            solve(lines);
    }
}

现在要获得正确答案,我需要按值排序我的urlMap。我怎样才能做到这一点 ?这里有没有其他好方法。

0 个答案:

没有答案