Mapをキーでソートする方法
マップをソートするには、まずキーをObject型の配列に格納し、配列をソートして、その配列をもとにしてマップから順番に値を取り出していく……ということを以前はやっていたのだが、よくよく調べてみると、自動でソートしてくれるTreeMapなるものが存在しているらしい。
import java.util.*; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { Map<Integer,String> map = new TreeMap<>(); map.put(1,"one"); map.put(3,"three"); map.put(5,"five"); map.put(4,"four"); map.put(2,"two"); map.forEach((key,value) -> System.out.println(key+":"+value)); /* 1:one 2:two 3:three 4:four 5:five */ } }
今回のように、コンストラクターに何も渡さなければ昇順に並ぶ。
Comparatorを渡して降順にすることもできる。
昇順:TreeMap<>();
降順:TreeMap<>(Comparator.reverseOrder());
値でソートする方法についてはまだほとんど分かっていないので、理解できたら記事にしたい。