我有以下几行日志说,
"[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。我怎样才能做到这一点 ?这里有没有其他好方法。