java在HashMap>>中,如何给你键排序
其实可以用TreeMap,HashMap用法在下面
参考来源:https://www.cnblogs.com/zhujiabin/p/6164826.html
public class MapSortDemo {
public static void main(String[] args) {
Map<String, String> map = new TreeMap<String, String>();
map.put("KFC", "kfc");
map.put("WNBA", "wnba");
map.put("NBA", "nba");
map.put("CBA", "cba");
Map<String, String> resultMap = sortMapByKey(map); //按Key进行排序
for (Map.Entry<String, String> entry : resultMap.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
/**
* 使用 Map按key进行排序
* @param map
* @return
*/
public static Map<String, String> sortMapByKey(Map<String, String> map) {
if (map == null || map.isEmpty()) {
return null;
}
Map<String, String> sortMap = new TreeMap<String, String>(
new MapKeyComparator());
sortMap.putAll(map);
return sortMap;
}
}
比较器类
class MapKeyComparator implements Comparator<String>{
@Override
public int compare(String str1, String str2) {
return str1.compareTo(str2);
}
}
参考来源:https://www.cnblogs.com/lovebread/archive/2009/11/23/1609121.html
HashMap排序
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("d", 2);
map.put("c", 1);
map.put("b", 1);
map.put("a", 3);
List<Map.Entry<String, Integer>> infoIds =
new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
//排序前
for (int i = 0; i < infoIds.size(); i++) {
String id = infoIds.get(i).toString();
System.out.println(id);
}
//d 2
//c 1
//b 1
//a 3
//排序
Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
//return (o2.getValue() - o1.getValue());
return (o1.getKey()).toString().compareTo(o2.getKey());
}
});
//排序后
for (int i = 0; i < infoIds.size(); i++) {
String id = infoIds.get(i).toString();
System.out.println(id);
}
//根据key排序
//a 3
//b 1
//c 1
//d 2
//根据value排序
//a 3
//d 2
//b 1
//c 1
请使用sortedHashMap
public static void test4() {
Map<String, String> map = new HashMap<>(16);
map.put("a", "b");
map.put("b", "c");
map.put("c", "d");
map.put("d", "a");
List<Map.Entry<String, String>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Entry<String, String>>() {
@Override
public int compare(Entry<String, String> o1, Entry<String, String> o2) {
// 倒序
return o2.getKey().compareTo(o1.getKey());
}
});
for (Entry<String, String> entry : list) {
System.out.println(entry.getKey() +":"+entry.getValue());
}
}
有一个比较容易理解的方法.
Map<String,Object> map = new HashMap<String,Object>();//原始的HashMap
Set<String> keySet = map.keySet();//获取键的集合
String[] keyArray = keySet.toArray(new String[keySet.size()]);//将集合转换成数组
Arrays.sort(keyArray);//利用java.util.Arrays工具类给数组排序
//得到排序后的key后,就可以根据map.get(key)来使用了