Java/Mapの降順ソート

Javaのお勉強 Mapのvalueで降順ソート

Java勉強したとき、コレクションの知識は必要になったら勉強しよう。
って、省略したので悪戦苦闘。
いろいろ調べたけど、ジェネリクス<>付いてる解説やサンプルが見つからなかったので、メモ。

今回は、keyではなくvalueを降順にソートしてみる。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class MapSort {
	public static void main(String[] args) {
		// HashMap 生成
		Map<String, Integer> hashMap = new HashMap<String, Integer>();
		hashMap.put("aaa", 100);
		hashMap.put("ccc", 200);
		hashMap.put("bbb", 400);
		hashMap.put("ddd", 300);
        
		// List 生成 (ソート用)
		List<Map.Entry<String,Integer>> entries = 
		      new ArrayList<Map.Entry<String,Integer>>(hashMap.entrySet());
		Collections.sort(entries, new Comparator<Map.Entry<String,Integer>>() {

			@Override
			public int compare(
			      Entry<String,Integer> entry1, Entry<String,Integer> entry2) {
				return ((Integer)entry2.getValue()).compareTo((Integer)entry1.getValue());
			}
		});
		
		// 内容を表示
		for (Entry<String,Integer> s : entries) {
			System.out.println("s.getKey() : " + s.getKey());
            System.out.println("s.getValue() : " + s.getValue());
		}
    }
}
         
ページのトップへ戻る