题解 | #简单错误记录# LinkedHashMap

简单错误记录

http://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

LinkedHashMap

考察 LinkedHashMap 的用法。 因为题目要求打印最后八条记录,即要求 map 能保证“有序”(输入、输出结果顺序一致),所以需要使用 LinkedHashMap

思路

  1. 输入处理

    • 根据 \ 分割文件,获取文件名(取后 1616 位)doc

      注意:正则 \ 需要转义,即 \\\\

    • 空格后为错误行 error
  2. doc + "_" + errorkey,存入 LinkedHashMap

  3. 只打印 LinkedHashMap 中最后 88 条记录

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();
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务