题解 | #简单错误记录#
题目感觉是这个比较好:记录日志最新的8条,如果重复出现记录出现次数加一,取所有日志中最新的8条差不多
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
LinkedHashMap<String, Integer> map = new LinkedHashMap();
List<String> rem = new ArrayList();
while (in.hasNextLine()) { // 注意 while 处理多个 case
String line = in.nextLine();
if (line.contains(" ")) {
// 处理数据
String[] data = line.split(" ");
String value = data[0];
if (value.length() > 0) {
int index = value.lastIndexOf("\\");
String result = value.substring(index + 1);
if (result.length() >= 16) {
result = result.substring(result.length() - 16);
}
result = result + "/" + data[1];
Integer s = map.get(result);
if (!rem.contains(result)) {
if (null != s && s > 0) {
map.put(result, map.get(result) + 1);
} else {
// 移除第八个数据
if (map.size() == 8) {
String key = map.entrySet().stream().findFirst().get().getKey();
rem.add(key);
map.remove(key);
}
map.put(result, 1);
}
}
}
}
}
map.forEach((key, value) -> {
String s = key.replace("/", " ") + " " + value;
System.out.println(s);
});
}
}