对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进行排序呢
实体类里
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进行排序呢
如果只有这两个属性, 可以写两个比较器, 如果有多个, 可以写一个比较器集合, 根据不同条件来获取不同的比较器.简单的比较器: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());
}
}