看板 java 關於我們 聯絡資訊
※ 引述《Neisseria (Neisseria)》之銘言: : 其實我 C++ 不熟哩 我也是 copy 程式碼來的 呵呵 : 不過不知為何 大大的方式我試過還是不能使用 略看上篇,回文裡的只是給你一個 idea, 並不是真的能跑的 code. : 我後來試了另一種方式 就是自己實做 Comparator 多事說幾句, 你這裡的 Comparator 是多餘的 : 然後丟到 sort 函式裡面 這樣就可以跑了 : public static <T extends Comparable<? super T>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 你這裡限制了 T 一定要是 Comparable : void ascending_sort(List<T> list) { ^^^^^^^^^^^^^^^ ^^^^^^^^ (留心 Java 的命 換而言之,傳進的一定是 名 convention) List of Comparable : Comparator<T> comp = new Comparator<T>(){ [43] : }; : sort(list, comp); : } 既然已經是 List of Comparable, 直接用 Collections.sort(list) 就行了。 提供 Comparator 的目的在於: 1) type 本身並不是 Comparable,或 2) 你想排序的方法與 type 的 compareTo 的比較方式不同。 : 不過如果是在 main 函式的話 就不能用這個方法 : 所以只好用一個 ascending_sort 函式包裝起來 : 如果希望 list 呈降冪排列 只要改 Comparator 的正負號即可 : 以上就是一點小心得 謝謝各位大大的指教 要是你已經限制傳進的一定要是 Comparable 的 list (像你上面 做的), 要做 decending sort,你的 comparator 甚至可以簡化成: class DecendingComparator<T extends Comparable<? super T>> { @Override public int compare(T o1, T o2) { return -(o1.compareTo(o2)); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 223.19.45.228