作者adrianshum (Alien)
看板java
标题Re: [问题] 将 static method 当做函数的参数传入?
时间Tue Aug 27 09:15:17 2013
※ 引述《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