public static void main(String[] args) {
ComparatorUtil util=new ComparatorUtil();
util.testSortComparator();
}
public void testSortComparator(){
List<Map<String, String>> tempList=new ArrayList<>();
Map<String, String> a1=new HashMap<>();
a1.put("value", "1.1");
Map<String, String> a2=new HashMap<>();
a2.put("value", "5.1");
Map<String, String> a3=new HashMap<>();
a3.put("value", "3.1");
Map<String, String> a4=new HashMap<>();
a4.put("value", "7.1");
tempList.add(a1);
tempList.add(a2);
tempList.add(a3);
tempList.add(a4);
doSort(tempList, "desc");
System.out.println("----"+tempList.toString());
}
/**
* 排序
* @param tempList
* @param sort_type
*/
private void doSort(List<Map<String, String>> tempList, String sort_type) {
if ("desc".equals(sort_type)) {
Collections.sort(tempList, new Comparator<Map<String, String>>() {
@Override
public int compare(Map<String, String> o1, Map<String, String> o2) {
//这里o1是指tempList 中排序靠后的值
//若 o1索引: index1 若 o2索引: index2 index1>index2
//compareTo返回结果说明:
// 如果指定的数与参数相等返回0。
// 如果指定的数小于参数返回 -1。
// 如果指定的数大于参数返回 1。
//sort返回结果说明:
//返回负数顺序互换;返回正数顺序不变
System.out.println("compare :o1="+o1.toString());
System.out.println("compare :o2="+o2.toString());
float value1 = Float.parseFloat(o1.get("value"));
float value2 = Float.parseFloat(o2.get("value"));
//第二个数大于第一个数返回正数
int result=new Float(value2).compareTo(new Float(value1));
System.out.println(result);
return result;
}
});
} else {
Collections.sort(tempList, new Comparator<Map<String, String>>() {
@Override
public int compare(Map<String, String> o1, Map<String, String> o2) {
float value1 = Float.parseFloat(o1.get("value"));
float value2 = Float.parseFloat(o2.get("value"));
return new Float(value1).compareTo(new Float(value2));
}
});
}
}
运行结果:
compare :o1={value=5.1}
compare :o2={value=1.1}
-1
compare :o1={value=3.1}
compare :o2={value=5.1}
1
compare :o1={value=3.1}
compare :o2={value=1.1}
-1
compare :o1={value=3.1}
compare :o2={value=5.1}
1
compare :o1={value=7.1}
compare :o2={value=3.1}
-1
compare :o1={value=7.1}
compare :o2={value=5.1}
-1
----[{value=7.1}, {value=5.1}, {value=3.1}, {value=1.1}]