1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap;
public class MapSortTest { public static Map<String, String> sortMapByKey(Map<String, String> oriMap){ if(oriMap==null || oriMap.isEmpty()) return null; Map<String, String>sortedMap = new TreeMap<String, String>(new Comparator<String>(){ @Override public int compare(String key1, String key2) {
return key1.compareTo(key2); } }); sortedMap.putAll(oriMap); return sortedMap; } public static Map<String, String> sortMapByValue(Map<String, String> oriMap){ Map<String, String> sortedMap = new LinkedHashMap<String, String>(); if(oriMap!=null || !oriMap.isEmpty()){ List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(oriMap.entrySet()); Collections.sort(entryList, new Comparator<Map.Entry<String, String>>(){ @Override public int compare(Entry<String, String> entry1, Entry<String, String> entry2) {
return entry1.getValue().compareTo(entry2.getValue()); } }); Iterator<Map.Entry<String, String>> iter = entryList.iterator(); Map.Entry<String, String> tmpEntry = null; while(iter.hasNext()){ tmpEntry = iter.next(); sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue()); } } return sortedMap; } public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("zhangsan", "29"); map.put("lisi", "35"); map.put("wangwu", "40"); map.put("mazi", "24"); System.out.println("The original map: " + map); System.out.println("Sort by key: " + sortMapByKey(map)); System.out.println("Sort by value: " + sortMapByValue(map)); } }
|