1.根据指定的顺序对列表进行排序
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
/**
* @author dengsilinming
*
*/
public class ListSortByListSortComparator implements Comparator<Object> {
//存放顺序的列表
private List<String> listSort;
//排序字段
private String sortField;
public ListSortByListSortComparator(List<String> listSort, String sortField){
this.listSort = listSort;
this.sortField = sortField;
}
public ListSortByListSortComparator(String strSort, String sortField){
listSort = new ArrayList<String>();
for(String s : strSort.split(",")){
listSort.add(s);
}
this.sortField = sortField;
}
@SuppressWarnings("rawtypes")
public int compare(Object o1, Object o2) {
Map m1 = (Map)o1;
Map m2 = (Map)o2;
String s1 = m1.get(sortField).toString();
String s2 = m2.get(sortField).toString();
int i1 = listSort.indexOf(s1);
int i2 = listSort.indexOf(s2);
if(i1 < 0){
i1 = listSort.size() + 1;
}
if(i2 < 0){
i2 = listSort.size() + 1;
}
if(i1 < i2){
return -1;
}else if(i1 == i2){
return 0;
}else{
return 1;
}
}
}
调用方式:
//对学生列表(studentList)按指定的顺序进行排序
Collections.sort(studentList, new ListSortByListSortComparator(studentNos, "studentNo"));
2.按指定的列表字段对列表进行排序
import java.util.Comparator;
import java.util.Map;
/**
* @author dengsilinming
*
*/
public class ListSortByValueComparator implements Comparator<Object> {
private String sortField;
public ListSortByValueComparator(String sortField){
this.sortField = sortField;
}
@SuppressWarnings("rawtypes")
public int compare(Object o1, Object o2) {
Map m1 = (Map)o1;
Map m2 = (Map)o2;
double i1 = Double.parseDouble(m1.get(sortField).toString());
double i2 = Double.parseDouble(m2.get(sortField).toString());
if(i1 > i2){
return -1;
}else if(i1 == i2){
return 0;
}else{
return 1;
}
}
}
调用方式:
//按学生成绩进行排序
Collections.sort(studentList, new ListSortByValueComparator("score"));