思路:将所有序列值放入一个list中,最后只输出最后8行;通过contains或者indexOf的方法来判断值是否重复。 Map无序,不可使用Map,但是LinkedHashMap或许可以使用。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
List<String> recordList = new ArrayList<>();
List<Integer> numList = new ArrayList<>();
while (scan.hasNextLine()) {
//得到输入的数据
String input = scan.nextLine();
String address = input.split(" ")[0];
String[] filePath = address.split("\\\\");
String fileName = filePath[filePath.length - 1];
if (fileName.length() > 16) fileName = fileName.substring(
fileName.length() - 16);
String rows = input.split(" ")[1];
String record = fileName + " " + rows;
//判断是否重复
if (!recordList.contains(record)) {
recordList.add(record);//不重复
numList.add(1);
} else {
int location = recordList.indexOf(record);
int num = numList.get(location);
numList.set(location, num+1);
}
}
//输出后8位
int j=recordList.size();
if(j<=8) {
for(int i=0;i<j;i++){
System.out.println(recordList.get(i)+" "+numList.get(i));
}
}else {
for(int i=j-8;i<j;i++){
System.out.println(recordList.get(i)+" "+numList.get(i));
}
}
}
}