Java编程题:简单错误记录(LinkedHashMap)
发布日期:2021-05-08 06:39:02 浏览次数:29 分类:精选文章

本文共 1546 字,大约阅读时间需要 5 分钟。

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Map
errorMap = new LinkedHashMap<>();
while (sc.hasNext()) {
String line = sc.next();
int lineNumber = sc.nextInt();
// 分割文件路径
String[] filePathParts = line.split("\\\\");
String fileName = filePathParts[filePathParts.length - 1];
// 截取文件名
if (fileName.length() > 16) {
fileName = fileName.substring(fileName.length() - 16);
}
// 生成唯一的记录键
String recordKey = fileName + " " + lineNumber;
// 更新错误记录
if (errorMap.containsKey(recordKey)) {
errorMap.put(recordKey, errorMap.get(recordKey) + 1);
} else {
errorMap.put(recordKey, 1);
}
}
// 输出最近的8条记录
int count = 0;
for (String record : errorMap.keySet()) {
count++;
if (count > errorMap.size() - 8) {
System.out.println(record + " " + errorMap.get(record));
}
}
}
}

代码解释

  • 读取输入:使用Scanner读取输入数据,每行包含文件路径和行号。
  • 处理文件路径:将路径分割,提取文件名,并截取最后16个字符。
  • 记录错误:使用LinkedHashMap存储错误记录,确保记录顺序。
  • 处理重复记录:检查是否存在相同的记录,若有则计数增加,否则新记录。
  • 输出结果:输出最后8条记录,每条格式为“文件名 行号 计数”。
  • 技术细节

    • 路径处理:使用split("\\\\")分割路径,确保正确获取文件名。
    • 文件名截取:使用substring确保文件名不超过16个字符。
    • 记录唯一性:通过键(文件名+行号)实现记录唯一性。
    • 输出顺序:使用LinkedHashMap保证输出顺序,确保最新记录先输出。
    上一篇:Java编程题:顺时针打印矩阵
    下一篇:Java编程题: 数组中出现次数超过一半的数字

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年04月16日 23时32分07秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章