HashMapをValueでソート
HashMapをValueでソートする方法。
参考:
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20928&forum=12
http://javatec.blog105.fc2.com/blog-entry-54.html
private HashMap<Integer, Integer> digest; private ArrayList<Integer> sortedKeys;
key、valueともにIntegerのHashMap digestを考えて、valueを降順に並べるkeyのlistをArrayList sortedKeysに作る。
@SuppressWarnings("unchecked") private void makeSortedKeys() { ArrayList<Object> entries = new ArrayList<Object>(digest.entrySet()); Collections.sort(entries, new Comparator<Object>() { public int compare(Object obj1, Object obj2) { Map.Entry<Integer, Integer> ent1 = (Map.Entry<Integer, Integer>) obj1; Map.Entry<Integer, Integer> ent2 = (Map.Entry<Integer, Integer>) obj2; Integer val1 = (Integer) ent1.getValue(); Integer val2 = (Integer) ent2.getValue(); return val2.compareTo(val1); } }); for (int i = 0; i < entries.size(); i++) { Map.Entry<Integer, Integer> me = (Map.Entry<Integer, Integer>) entries.get(i); sortedKeys.add((Integer) me.getKey()); } }
sortedKeysを順に取り出せば、HashMapのvalueがソートされて出てくる。