Re: [问题] Collections.sort更简洁的写法?

楼主: kogrs (kogrs)   2015-05-29 01:37:41
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能不能用...)

Links booklink

Contact Us: admin [ a t ] ucptt.com