Javaのstreamでシュッとソートする
Javaのソートはすっと思い出せないことが多いのでメモ
ざっくりと、sorted でつなげてstringやint以外ならsortedにComparator.comparingに対象要素のソート対象キーを指定してやればOK!!!
数値や文字列のソート
code: jshell
jshell> var list = List.of("1", "3", "8", "3", "2");
# 昇順ソート
jshell> list.stream().sorted().collect(Collectors.toList());
# 降順ソート
jshell> list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
Beanとかのソート
code: java
class Scratch {
public static void main(String[] args) {
var list = List.of(
new Bean("c"), new Bean("b"), new Bean("f"), new Bean("a")
);
System.out.println(
list.stream()
// 降順なら
// .sorted(Comparator.comparing(Bean::getFoo).reversed())
.sorted(Comparator.comparing(Bean::getFoo))
.collect(Collectors.toList())
);
}
static class Bean {
private final String foo;
public Bean(String foo) { this.foo = foo; }
public String getFoo() { return foo; }
@Override
public String toString() {
return "Bean{" + "foo='" + foo + '\'' + '}';
}
}
}