思路:将所有序列值放入一个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));
        }
        }
        

    }
}