对list集合里的实体类进行排序
实体类里
private String content;
private String state;
//set/get public int compareTo(Object obj) {
long i = Long.valueOf(this.content);
long k = Long.valueOf(((DiskInResourceEntity)obj).getContent());
if(i < k) {
return -1;
}else if(i == k) {
return 0;
}else {
return 1;
}
}现在是按照content属性进行排序
但是业务逻辑是在页面选择content或者state,选哪个就按照哪个排序
如果选择了state,我该怎么按照state进行排序呢

解决方案 »

  1.   

    在compareTo方法里面加一层if判断
      

  2.   

    可以使用比较器试试哈.
    如果只有这两个属性, 可以写两个比较器, 如果有多个, 可以写一个比较器集合, 根据不同条件来获取不同的比较器.简单的比较器:import java.util.*;import obj.TestObject;public class Test {
    public static void main(String arg[]) {
    TestObject t1 = new TestObject("te2", "sad");
    TestObject t2 = new TestObject("te1", "sad");
    TestObject t3 = new TestObject("te0", "sad");
    List<TestObject> list = new ArrayList<TestObject>();
    list.add(t1);
    list.add(t2);
    list.add(t3);
    // 这儿可以加判断条件来获取不同比较器
    Collections.sort(list, new MyComparator());
    System.out.println(list);
    }
    }class MyComparator implements Comparator<TestObject> {
    @Override
    public int compare(TestObject obj1, TestObject obj2) {
    return obj1.getName().compareTo(obj2.getName());
    }
    }
      

  3.   

    把 comparator 当成属性 set 进去再排序就得了。