😎
Javaでリストを別のリストで指定した順番に並び替える
リストを並び替える際に昇順などではなく、別にリストで指定した順番で並び替える方法です。
record Person(String name, String hobby) {}
var people = List.of(
new Person("一郎", "サッカー"),
new Person("二郎", "バイオリン"),
new Person("三郎", "音楽鑑賞"),
new Person("四郎", "ドラマ鑑賞"),
new Person("五郎", "ソフトボール"));
var specifyOrder = List.of("四郎", "五郎", "一郎", "三郎", "二郎");
people.stream()
.sorted((c1, c2) -> Integer.compare(specifyOrder.indexOf(c1.name), specifyOrder.indexOf(c2.name)))
.forEach(System.out::println);
結果
Person[name=四郎, hobby=ドラマ鑑賞]
Person[name=五郎, hobby=ソフトボール]
Person[name=一郎, hobby=サッカー]
Person[name=三郎, hobby=音楽鑑賞]
Person[name=二郎, hobby=バイオリン]
Discussion