import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, Integer> map = new LinkedHashMap<>(); //保证按插入时的顺序存放元素
while (scanner.hasNext()) {
String str = scanner.next(); //可能带路径的文件
int n = scanner.nextInt(); //行号
int index = str.lastIndexOf("\\"); //判断文件是否带路径,如果找到了最后一个\,表示此文件带路径,取出最后一个\后边的内容->文件名;否则此文件本身就是一个文件名
String name = index == -1 ? str : str.substring(index + 1);
String key = name + " " + String.valueOf(n);
if (!map.containsKey(key)) { //把文件名和行号共同作为key【文件名和行号中间以空格隔开】
map.put(key, 1);
} else {
map.put(key, map.get(key) + 1);
}
}
List<Map.Entry<String, Integer>> list = new LinkedList<>(map.entrySet()); //将map集合变成list,方便对map的value进行排序
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { //传入一个降序比较器
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue() > o2.getValue() ? -1 : o1.getValue().equals(o2.getValue()) ? 0 : 1;
}
});
int m = 0;
for (Map.Entry<String, Integer> mx : list) {
if (m >= 8) { //最多输出8条 按顺序
break;
}
String[] k = mx.getKey().split(" "); //取出key值,并按空格分割
String fName = k[0]; //取出文件名
if (fName.length() > 16) { //如果文件名长度大于16,只取后16位
fName = fName.substring(fName.length() - 16);
}
String line = k[1]; //行号
int count = mx.getValue(); //错误数
System.out.println(fName + " " + line + " " + count);
m++;
}
}
}
简单错误记录(前8条)
最新推荐文章于 2022-04-20 09:53:49 发布