valueにListのオブジェクトを持つMapオブジェクトがあるとして、そのMapオブジェクトをvalueに入っているListのサイズの降順でソートしたい場合。
Map<String, List> map = new HashMap<String, List>(); //適当にMapに値をセットする .... //Listのサイズの降順にソート List<Map.Entry> entries = new LinkedList(map.entrySet()); Collections.sort(entries, new Comparator(){ public int compare(Object o1, Object o2) { Map.Entry entry1 = (Map.Entry) o1; Map.Entry entry2 = (Map.Entry) o2; List list1 = (List)entry1.getValue(); List list2 = (List) entry2.getValue(); return list2.size() - list1.size(); } });
こうすると、entriesがサイズの降順でソートされたMap.Entryのリストになっている。
Map.EntryからはそれぞれgetKey()とgetValue()でキー、値が取得できる。