题解 | #简单错误记录# LinkedHashMap
简单错误记录
http://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
LinkedHashMap
考察
LinkedHashMap
的用法。 因为题目要求打印最后八条记录,即要求map
能保证“有序”(输入、输出结果顺序一致),所以需要使用LinkedHashMap
。
思路
-
输入处理
- 根据
\
分割文件,获取文件名(取后 位)doc
注意:正则
\
需要转义,即\\\\
- 空格后为错误行
error
- 根据
-
以
doc + "_" + error
为key
,存入LinkedHashMap
-
只打印
LinkedHashMap
中最后 条记录
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Map<String, Integer> map = new LinkedHashMap<>();
while (in.hasNextLine()) {
// 处理输入
String line = in.nextLine();
String[] arr = line.split(" ");
String[] docs = arr[0].split("\\\\");
String doc = docs[docs.length - 1];
if (doc.length() > 16) {
doc = doc.substring(doc.length() - 16);
}
String error = arr[1];
// 存入map
String key = doc + "_" + error;
map.put(key, map.getOrDefault(key, 0) + 1);
}
int index = 0;
int n = map.size();
for (Map.Entry<String, Integer> entry : map.entrySet()) {
// 只打印最后8条记录
if (index++ + 8 >= n) {
String[] key = entry.getKey().split("_");
System.out.println(key[0] + " " + key[1] + " " + entry.getValue());
}
}
in.close();
}
}