根据列表中的指定字段进行排序

来源:互联网 发布:杰尼斯知乎 编辑:程序博客网 时间:2024/06/04 18:50

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"));

0 0
原创粉丝点击