根據參數名稱的ASCII碼錶順序升序排序,那麼首先要弄明白什麼是ASCII碼錶
ASCII ((American Standard Code for Information Interchange): 美國信息交換標準代碼)
先來看一下ASCII碼錶,簡單列舉其中幾個值
ASCII值 | 控制字符 |
---|---|
0 | NUT |
1 | SOH |
48 | 0 |
49 | 1 |
97 | a |
98 | b |
也就是0在ASCII碼錶中代表的值是48,a在ASCII碼錶中代表的值是97,此爲信息交換,因爲計算機存儲數據和運算都要使用二進制表示(計算機用高電平和低電平分別表示1和0),像a、b、c、d這樣的52個字母(包括大寫)以及0、1等數字還有一些常用的符號(例如*、#、@等)在計算機中存儲時也要使用二進制數來表示,而具體用哪些二進制數字表示哪個符號,當然每個人都可以約定自己的一套(這就叫編碼),而大家如果要想互相通信而不造成混亂,那麼大家就必須使用相同的編碼規則,於是美國有關的標準化組織就出臺了ASCII編碼,統一規定了上述常用符號用哪些二進制數來表示
所以說了這麼多計算機就是按ASCII規範來存儲數據的,所有的字符都有自己代表的數字,所以排序自然也是按照這個順序來排的
下面直接上代碼
public class Demo1 {
public static void main(String[] args) {
Map<String,Object> map = new HashMap<>();
map.put("bbb", 1);
map.put("aaa", "hello");
map.put("abc", "abc");
map.put("u1", "u1");
System.out.println("排序前:" + map);
map = SortUtil.sortByKey(map);
System.out.println("排序後:" + map);
}
}
class SortUtil{
public static Map<String, Object> sortByKey(Map<String, Object> map){
//創建一個帶有比較器的TreeMap
Map<String, Object> treeMap = new TreeMap<>(String::compareTo);
//將你的map傳入treeMap
treeMap.putAll(map);
return treeMap;
}
}
只需要兩行代碼就可以搞定,來看下輸出結果
排序前:{aaa=hello, bbb=1, abc=abc, u1=u1}
排序後:{aaa=hello, abc=abc, bbb=1, u1=u1}