Как отсортировать ArrayList по алфавиту, то по номеру - PullRequest
0 голосов
/ 22 марта 2019

так выглядит перед сортировкой. Название книги, год издания

enter image description here

Я хочу отсортировать заголовок по алфавиту, а затем по году публикации.
Это моя текущая кодировка перед сортировкой:

    ArrayList BookList = new ArrayList();
    BufferedReader br = new BufferedReader (new FileReader ("bookInput.txt"));

    String str = br.readLine();
    while (str!=null){
        StringTokenizer st = new StringTokenizer(str,";");
        String title = st.nextToken();
        String yr = st.nextToken();
        int year = Integer.parseInt(yr);
        Book b1 = new Book (title,year);
        BookList.add(b1);
        str = br.readLine();
    }
    br.close();

    //3(d)
    System.out.println("List of Books" + "( " + BookList.size() + " record(s) ) ");
    for (int i = 0; i < BookList.size(); i++){
        Book b2 = (Book)BookList.get(i);
        System.out.println("#" + (i+1) + " " + b2.getTitle() + " , " + b2.getYear());
    }

Я перепробовал все, что знаю, но не смог 101

1 Ответ

6 голосов
/ 22 марта 2019

Вы можете использовать цепочку Comparator, предполагая, что Book класс имеет геттеры:

BookList.sort(Comparator.comparing(Book::getTitle)
                        .thenComparingInt(Book::getYear));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...