import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; public class neo { //實作Comparator的介面宣告compare方法 private class ValueComparator implements Comparator<Map.Entry<String, Integer>> { public int compare(Map.Entry<String, Integer> mp1, Map.Entry<String, Integer> mp2) { //大到小mp2-mp1,小到大mp1-mp2 return mp2.getValue() - mp1.getValue(); } } public List<String> showsortedlist(Map<String, Integer> map) { //先把HashMap轉成List形式 List<Map.Entry<String, Integer>> sortedlist = new ArrayList<Map.Entry<String, Integer>>(map.size()); //把map中所有東西丟到sortedlist sortedlist.addAll(map.entrySet()); ValueComparator vc = new ValueComparator(); //利用Collections.sort排序sortedlist Collections.sort(sortedlist, vc); final List<String> sortedvalue_keys = new ArrayList<String>(map.size()); Iterator iter = sortedlist.iterator(); while (iter.hasNext()) { Entry<String, Integer> data = (Entry<String, Integer>) iter.next(); Object key = data.getKey(); Object val = data.getValue(); System.out.println(key+"=>"+val); sortedvalue_keys.add((String) key); } return sortedvalue_keys; } public static void main(String args[]){ Map<String,Integer> map = new HashMap<String,Integer>(); map.put("20030120" , new Integer (56)); map.put("20030118" , new Integer (19)); map.put("20030125" , new Integer (25)); map.put("20030122" , new Integer (32)); map.put("20030117" , new Integer (67)); map.put("20030123" , new Integer (34)); map.put("20030124" , new Integer (42)); map.put("20030121" , new Integer (19)); map.put("20030119" , new Integer (98)); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); System.out.println(key+"=>"+val); } System.out.println("開始排序"); neo gosort = new nothing(); gosort.showsortedlist(map); } }
2012年4月25日 星期三
JAVA的HashMap對value排序
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言