题解 | #简单错误记录#

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

```import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Queue;
import java.util.Scanner;

public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);

solution1(in);
solution2(in);
}

/**
* @param in
*/
private static void solution1(Scanner in){
HashMap<String, Integer> map = new LinkedHashMap<>();

while(in.hasNext()){
String record = in.nextLine().trim();

String[] fileLine = record.split("\\s+");
String[] fileParts = fileLine[0].split("\\\\");
String fileLastPart = fileParts[fileParts.length-1];

String fileSuffix = fileLastPart.substring(Math.max(fileLastPart.length()-16, 0));
String line = fileLine[1];

String key = fileSuffix + " " + line;
map.put(key, map.getOrDefault(key, 0)+1);
}

// 输出最后8个
int pre = 0;
for(Map.Entry<String, Integer> entry: map.entrySet()){
if(map.size()-pre <= 8){
System.out.println(entry.getKey() + " " + entry.getValue());
}
pre++;
}
}

/**
* map set queue
* @param in
*/
private static void solution2(Scanner in){
HashSet<String> set = new HashSet<>();
HashMap<String, Integer> map = new HashMap<>();

while(in.hasNext()){
String record = in.nextLine().trim();

// duplicate record
if(set.contains(record)){
continue;
}else{
}

String[] fileLine = record.split(" ");
String[] fileParts = fileLine[0].split("\\\\");
String fileLastPart = fileParts[fileParts.length-1];

String fileSuffix = fileLastPart.substring(Math.max(fileLastPart.length()-16, 0));
String line = fileLine[1];

String key = fileSuffix + " " + line;

if(map.containsKey(key)){
map.put(key, map.get(key)+1);
}else{
map.put(key, 1);

if(queue.size() == 8){
queue.poll();
}
}
}

for(String key: queue){
System.out.println(key + " " + map.get(key));
}
}
}
```