利用map中的 entry,将map的key,value放入list中进行冒泡排序处理;
代码:
package com.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class MapSortUtils {
/**
* @冒泡排序(降序)
* @param map
* @return
*/
public static LinkedHashMap<String,Integer> mapSort( Map<String,Integer> map){
LinkedHashMap<String, Integer> linkedHashMap=new LinkedHashMap<>();
List<Map.Entry<String, Integer>> list=new ArrayList<Map.Entry<String,Integer>>(map.size());
list.addAll(map.entrySet());
int num=map.size();
for(int i=0;i<num-1;i++) {
for(int j=0;j<num-i-1;j++) {
Entry<String, Integer> e1=list.get(j);
Entry<String, Integer> e2=list.get(j+1);
if(e1.getValue()<e2.getValue()) {
Collections.swap(list,j, j+1);
}
}
}
for(int n=0;n<=num-1;n++) {
Entry<String, Integer> entry=list.get(n);
linkedHashMap.put(entry.getKey(), entry.getValue());
}
return linkedHashMap;
}
public static void main(String[] args) {
Map<String,Integer> map=new HashMap<String, Integer>();
map.put("小明1", 1);
map.put("小明2", 11);
map.put("小明3", 12);
map.put("小明4", 9);
map.put("小明5", 8);
LinkedHashMap<String,Integer> hashmap=mapSort(map);
for(String key:hashmap.keySet()) {
System.out.println("key:"+key+";value:"+map.get(key));
}
}
}
执行结果:
key:小明3;value:12
key:小明2;value:11
key:小明4;value:9
key:小明5;value:8
key:小明1;value:1