方法
compareTo()
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
返回整数,1,-1,0;返回1表示大于,返回-1表示小于,返回0表示相等。
普通的Integer 类型key进行比较:
public classjava_ListMapSort {public static voidmain(String[] args) {
List> list = new ArrayList>();
Map map1 = new HashMap();
map1.put("name", "p");
map1.put("cj", "5");
Map map2 = new HashMap();
map2.put("name", "h");
map2.put("cj", "12");
Map map3 = new HashMap();
map3.put("name", "f");
map3.put("cj", "31");
list.add(map1);
list.add(map3);
list.add(map2);//排序前
for (Mapmap : list) {
System.out.println(map.get("cj"));
}
Collections.sort(list,new Comparator>() {public int compare(Map o1, Mapo2) {
Integer name1= Integer.valueOf(o1.get("cj").toString()) ;//name1是从你list里面拿出来的一个
Integer name2 = Integer.valueOf(o2.get("cj").toString()) ; //name1是从你list里面拿出来的第二个name
returnname1.compareTo(name2);
}
});//排序后
System.out.println("-------------------");for (Mapmap : list) {
System.out.println(map.get("cj"));
}
}
}
中文字符比较:
要实现汉字按首字母排序,主要是设置语言环境,如下语句设置语言环境:
这里用到了Collator类,此类实现了Comparator接口,用他的getInstance就可以用指定的语言环境来构造一个Collator对象:
然后用如下语句创建Comparator:
Comparator com=Collator.getInstance(java.util.Locale.CHINA);
要注意的是Comparator里面的泛型类型一定要是Object类型,因为Collator类实现的Comparator接口里面传入的对象是Object:
完整的实现代码如下:
import java.text.Collator;
import java.util.*;
import java.util.Comparator;
public class cpm {
public static void main(String[] args) {
// TODO Auto-generated method stub
Comparator com=Collator.getInstance(java.util.Locale.CHINA);
String[] newArray={"中山","汕头","广州","安庆","阳江","南京","武汉","北京","安阳","北方"};
List list = Arrays.asList(newArray);
Collections.sort(list, com);
for(String i:list){
System.out.print(i+" ");
}
}
}
输出结果是:
安庆 安阳 北方 北京 广州 南京 汕头 武汉 阳江 中山
实例2:
List> list = new ArrayList<>();
List groupItemUserLists =groupItemUserRepository.findAllByAgencyId(agencyId);
Iterator iterator =groupItemUserLists.iterator();for(; iterator.hasNext();) {
GroupItemUser groupItemUser=(GroupItemUser) iterator.next();
Long userId=groupItemUser.userId();
SysUser sysUser=sysUserRepository.findOne(userId);
String name=sysUser.name();
Map map = new HashMap<>();
map.put("id", userId);
map.put("name", name);
list.add(map);
}//将List集合按照Map的name进行排序(a>b>c ...)
if(CollectionUtils.isNotEmpty(list)){
Collections.sort(list,new Comparator>() {
@Overridepublic int compare(Map o1, Mapo2) {
Collator instance=Collator.getInstance(Locale.CHINA);return instance.compare(o1.get("name").toString(), o2.get("name").toString());
}
});
}return list;