Posłużyłem się podpowiedzią @Wiciorny, ale też nie do końca. Przeczytałem gdzieś w internecie, że TreeMap nie sortuje się po prostu po wartościach, co chciałem zrobić, tylko jedynie po kluczach. Dlatego postalowiłem posortowane książki wsadzać do SortedSet, który w konstruktorze bierze obiekt Comparable.
public class TitleCompare implements Comparator<Map.Entry<String, Book>>{
// Comparator porównujący po tytułach książek
@Override
public int compare(Map.Entry<String, Book> e1,
Map.Entry<String, Book> e2) {
return e1.getValue().getTitle().compareTo(e2.getValue().getTitle());
}
}
Następnie do klasy Bookshop dodałem funkcję, która tworzy i zwraca posortowany set
public SortedSet<Map.Entry<String, Book>> sortTitle(){
SortedSet<Map.Entry<String, Book>> set = new TreeSet<>(new TitleCompare());
set.addAll(bookList.entrySet());
return set;
}
Odpowiedź @Wiciorny była wartościowa, ale z tego co rozumiem polegała na sortowaniu kolekcji obiektów typu Bookshop, natomiast ja chciałem sortować mapę booklist, która była zawarta w obiekcie bookshop