方法
compareTo()
比較此對象與指定對象的順序。如果該對象小於、等於或大於指定對象,則分別返回負整數、零或正整數。
返回整數,1,-1,0;返回1表示大於,返回-1表示小於,返回0表示相等。
普通的Integer 類型key進行比較:
public class java_ListMapSort { public static void main(String[] args) { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map1 = new HashMap<String, Object>(); map1.put("name", "p"); map1.put("cj", "5"); Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("name", "h"); map2.put("cj", "12"); Map<String, Object> map3 = new HashMap<String, Object>(); map3.put("name", "f"); map3.put("cj", "31"); list.add(map1); list.add(map3); list.add(map2); //排序前 for (Map<String, Object> map : list) { System.out.println(map.get("cj")); } Collections.sort(list, new Comparator<Map<String, Object>>() { public int compare(Map<String, Object> o1, Map<String, Object> o2) { Integer name1 = Integer.valueOf(o1.get("cj").toString()) ;//name1是從你list里面拿出來的一個 Integer name2 = Integer.valueOf(o2.get("cj").toString()) ; //name1是從你list里面拿出來的第二個name return name1.compareTo(name2); } }); //排序后 System.out.println("-------------------"); for (Map<String, Object> map : list) { System.out.println(map.get("cj")); } } }
中文字符比較:
要實現漢字按首字母排序,主要是設置語言環境,如下語句設置語言環境:
這里用到了Collator類,此類實現了Comparator接口,用他的getInstance就可以用指定的語言環境來構造一個Collator對象:

然后用如下語句創建Comparator:
- Comparator<Object> 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<Object> com=Collator.getInstance(java.util.Locale.CHINA);
- String[] newArray={"中山","汕頭","廣州","安慶","陽江","南京","武漢","北京","安陽","北方"};
- List<String> list = Arrays.asList(newArray);
- Collections.sort(list, com);
- for(String i:list){
- System.out.print(i+" ");
- }
- }
- }
輸出結果是:
安慶 安陽 北方 北京 廣州 南京 汕頭 武漢 陽江 中山
實例2:
List<Map<String,Object>> list = new ArrayList<>(); List<GroupItemUser> groupItemUserLists = groupItemUserRepository.findAllByAgencyId(agencyId); Iterator<GroupItemUser> 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<String, Object> 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<Map<String,Object>>() { @Override public int compare(Map<String,Object> o1, Map<String,Object> o2) { Collator instance = Collator.getInstance(Locale.CHINA); return instance.compare(o1.get("name").toString(), o2.get("name").toString()); } }); } return list;
