Re: [問題] Collections.sort更簡潔的寫法?

看板java作者 (kogrs)時間10年前 (2015/05/29 01:37), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/6 (看更多)
package test; import java.util.*; public class Compar { public int i; public int j; public int k; public Compar() { } /** * */ public static void main(String[] args) { List dataList = new ArrayList(); Compar a=new Compar(); a.i=1; a.j=2; a.k=3; Compar b=new Compar(); b.i=2; b.j=3; b.k=1; Compar c=new Compar(); c.i=3; c.j=1; c.k=2; dataList.add(a); dataList.add(b); dataList.add(c); Collections.sort(dataList, new Comparator(Comparator.SORT_K)); System.out.println(dataList); } public String toString() { return "i="+i+",j="+j+",k="+k; } static class Comparator implements java.util.Comparator { public static final int SORT_I=1; public static final int SORT_J=2; public static final int SORT_K=3; public int sort_field_idx=0; public Comparator(int idx) { this.sort_field_idx=idx; } public int compare(Object lhs, Object rhs) { switch (this.sort_field_idx) { case SORT_I: return (((Compar)lhs).i - ((Compar)rhs).i); case SORT_J: return (((Compar)lhs).j - ((Compar)rhs).j); case SORT_K: return (((Compar)lhs).k - ((Compar)rhs).k); default: throw new java.lang.RuntimeException(); } } } } ※ 引述《james732 (好人超)》之銘言: : 使用IDE:Android Studio 1.2.1.1 : 我有一個class: : class MyData : { : public int i, j, k, l, m, n, o; // 七組資料 : }; : 然後有個 List 裝了很多個 Data : List<MyData> dataList = new ArrayList<MyData>(); : 我希望讓使用者可以選擇根據i,j,k,l,m,n,o的某一項來排序list,所以寫了 : Collections.sort(dataList, new Comparator<MyData>() { : @Override : public int compare(MyData lhs, MyData rhs) { : return (lhs.i > rhs.i); : } : } : 同樣的內容寫了七次,就只有上面紅色的部份不同 : 雖然程式看起來可以正常運作,但自己都覺得那一堆實在累贅.... : 想請問有沒有其他辦法可以讓我重覆的code不要那麼多呢?變得更加簡潔 : (假如無法使用lambda...我還在研究Android studio能不能用...) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.84.243.193 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1432834664.A.ED6.html
文章代碼(AID): #1LPr9exM (java)
文章代碼(AID): #1LPr9exM (java)