package com.huawei.test;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Sorter {
public static Map sort(Map map,final boolean flag) {
Map<Object, Object> mapVK = new TreeMap<Object, Object>(
new Comparator<Object>() {
public int compare(Object obj1, Object obj2) {
String v1 = (String)obj1;
String v2 = (String)obj2;
int s = v2.compareTo(v1);
if(flag)
{
return s;
}else
{
return -s;
}
}
}
);
Set col = map.keySet();
Iterator iter = col.iterator();
while (iter.hasNext()) {
String key = (String) iter.next();
Integer value = (Integer) map.get(key);
mapVK.put(key, value);
}
return mapVK;
}
}
//Test
//其中true,代表按String 降序,false 为按String 升序
package com.huawei.test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class SortHashMap {
public static void main(String[] args) {
Map<String, Integer> maps = new HashMap<String, Integer>();
maps.put("boy", 8);
maps.put("cat", 7);
maps.put("dog", 1);
maps.put("apple", 5);
maps.put("abcd", 5);
maps.put("bcasd", 3);
maps.put("heasdf", 2);
//排序前的输出
Set set = maps.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry<String, Integer> entry1=(Map.Entry<String, Integer>)i.next();
System.out.println(entry1.getKey() + "-------->" + entry1.getValue());
}
System.out.println("----------------");
//排序后的输出
Map<String, Integer> sortMaps = Sorter.sort(maps,false);
Set sortSet = sortMaps.entrySet();
Iterator ii = sortSet.iterator();
while(ii.hasNext()){
Map.Entry<String, Integer> entry1=(Map.Entry<String, Integer>)ii.next();
System.out.println(entry1.getKey() + ":" + entry1.getValue());
}
}
}