JavaでのMapはキー(Key)または値(Value)に従ってソートされます


JavaのMap構造はkey-->valueキー値ペアで格納されており、Mapの特性に基づいて同じMapには2つのKeyと同じ要素は存在せず、valueにはこの制限は存在しないことが知られています.言い換えれば、同じMapにおけるKeyは唯一であり、valueは唯一ではない.Mapはインタフェースであり、Mapタイプのオブジェクトを直接宣言することはできません.実際の開発では、比較的一般的なMapデータ構造はHashMapとTreeMapであり、いずれもMapの直接サブクラスです.アクセス効率を考慮するとHashMapデータ構造を使用することを推奨し、Keyの順序を考慮する必要がある場合はTreeMapを使用することを推奨するが、TreeMapは削除、追加の過程でソートする必要があり、パフォーマンスが悪い.
キーでソート
(1.1):TreeMapオブジェクトを宣言できます.
Map<Integer, Person> map = new TreeMap<Integer, Person>()

(1.2):mapに要素を追加し、結果を出力することで、mapの中の要素が順番に並んでいることがわかります.
//    
for (Iterator<Integer> it = map.keySet().iterator(); it.hasNext();) {
	Person person = map.get(it.next());
	System.out.println(person.getId_card() + " " + person.getName());
}

(2):次のように、HashMapオブジェクトを宣言し、TreeMapオブジェクトにHashMapオブジェクトを割り当てることもできます.
Map<Integer, Person> map = new HashMap<Integer, Person>();
TreeMap treemap = new TreeMap(map);

注意:上記の2つの方法では、key値のソートを簡単に実現できます.
valueでソート
(1):HashMapオブジェクトを宣言します.
Map<String, Integer> map = new HashMap<String, Integer>();

(2):MaコレクションをListコレクションに変換し、最後にCollectionsツールクラスでソートする
List<Entry<String,Integer>> list = new ArrayList<Entry<String,Integer>>(map.entrySet())

(3):Collections.sort(List list,Comparator c)メソッドをソートします.コードは次のとおりです.
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
	public int compare(Map.Entry<String, Integer> o1,
			Map.Entry<String, Integer> o2) {
		return (o2.getValue() - o1.getValue());
	}
});

注意:これにより、Mapのvalueを逆順に並べ替えることができ、昇順が必要な場合はo 2を変更するだけです.getValue()-o1.getValue()はo 1.getValue()-o2.getValue()でいいです.
記事の由来:過去の記憶:http://www.iteblog.com/archives/484