LoginSignup
0
0

More than 1 year has passed since last update.

JavaのMapを値(int)でソートする

Posted at

Mapを値の降順で出力したかったのだけど、
調べてもよく分からないAPIを利用する方法しか見つからなかったので、
普通の制御文だけでソートするコードを書きました。

Main.java
//キーはString、値はint
Map<String, Integer> map = new HashMap<String, Integer>();

//中身の格納は省略

//値の最大値と最小値を求める
int max_v=-2_147_483_648;
int min_v=2_147_483_647;
for(String key:map.keySet()) {
	max_v=Math.max(max_v, map.get(key));
	min_v=Math.min(min_v, map.get(key));
}

//最大値から最小値まで降順に総当たりしてヒットしたら出力
int i=max_v;
while(i>=min_v) {
	for(String key:map.keySet()) {
		if(map.get(key)==i) {
			System.out.println(key+" "+map.get(key));
		}
	}
	i--;
}	

paizaの「文字と整数の組のソート2」は一応これで通りました。
https://paiza.jp/works/mondai/prob60/sort_add_9
System.out.printlnの代わりに
LinkedHashMapに格納しても便利かもしれない。
値がfloatだと普通に使えないですが……。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0