public static void main(String[] args) { List<Map<String, Object>> mapList = new ArrayList<Map<String,Object>>(); Map<String, Object> m1 = new HashMap<String,Object>(); m1.put("name", "AC"); Map<String, Object> m2 = new HashMap<String,Object>(); m2.put("name", "AB"); Map<String, Object> m3 = new HashMap<String,Object>(); m3.put("name", "中国"); Map<String, Object> m4 = new HashMap<String,Object>(); m4.put("name", "广东"); Map<String, Object> m5 = new HashMap<String,Object>(); m5.put("name", "B东"); Map<String, Object> m6 = new HashMap<String,Object>(); m6.put("name", "C东"); mapList.add(m1); mapList.add(m2); mapList.add(m3); mapList.add(m4); mapList.add(m5); mapList.add(m6); if(CollectionUtils.isNotEmpty(mapList)){ Collections.sort(mapList, new Comparator<Map<String,Object>>() { @Override public int compare(Map<String,Object> m1, Map<String,Object> m2) { String o1 = (String) m1.get("name"); String o2 = (String) m2.get("name"); char c1 = ((String) o1).charAt(0); char c2 = ((String) o2).charAt(0); return concatPinyinStringArray(PinyinHelper.toHanyuPinyinStringArray(c1)).compareTo( concatPinyinStringArray(PinyinHelper.toHanyuPinyinStringArray(c2))); } }); } for (Map<String, Object> map : mapList) { System.out.println("map:"+(String)map.get("name")); } } private static String concatPinyinStringArray(String[] pinyinArray) { StringBuffer pinyinSbf = new StringBuffer(); if ((pinyinArray != null) && (pinyinArray.length > 0)) { for (int i = 0; i < pinyinArray.length; i++) { pinyinSbf.append(pinyinArray[i]); } } return pinyinSbf.toString(); }