sort - Java排序:按屬性排序對像數組,不允許使用Comparable對象




sort comparator java example (4)

堅持這個在你的圖書館:

java.util.Collections.sort(bookList, bookComparator);

我有一個類庫,包含一個Book對象的數組,我需要基於Book的屬性,標題或PageNumber排序數組。 問題是我不允許使用Book的Comparable類。 你會如何推薦我在圖書館排列圖書的數組? 寫我自己的排序? 還是有更簡單的方法? 如果你需要代碼片段,只需要問!


創建一個新的treeMap並在key和value之間切換角色。

TreeMap<Title ,Book> treeMap = new TreeMap<Title,Book>();

將所有數據複製到新的TreeMap。

您現在有一個基於Title的排序集合。 (並且不需要比較器:))


您可以提供Comparator來比較您希望的任何類型, Comparable或其他。

對於你使用的數組和集合

Arrays.sort(array, myComparator);
Collections.sort(list, myComparator);

即使像TreeSet這樣的排序的集合也可以使用自定義的比較器

例如

Collections.sort(books, new Comparator<Book>() {
   public int compare(Book b1, Book b2) {
      return if b1 is greater return +1, if b2 is smaller return -1 otherwise 0
   }
});

展開@ PeterLawrey對Java 8的回答,現在可以使用Lambda表達式而不是Comparable<T>委託:

Collections.sort(books, (firstBook, secondBook -> b1 is greater return +1, 
                                                  if b2 is smaller return -1 otherwise 0));






comparable