ReturnalConsumer の使いどころ

先日と同じことではあるが、、
Matcher の find() と group() (2) - Oboe吹きプログラマの黙示録

ReturnalConsumer の使いどころとして、、
https://github.com/yipuran/yipuran-core/wiki#returnalconsumert

String str = "aaa134_cd45_def";
String res = ReturnalConsumer.of(Matcher.class).with(Matcher::find).get(Pattern.compile("\\d+").matcher(str)).group();

この結果は、res = "134" である。

課題:"aaa_3", "bbb_12", "ccc", "ddd_32zz", "eee_7" という文字列のリストで、末尾が、"_"+数
中で最大値を求める。

Pattern taildec = Pattern.compile("^.+_\\d+$");
Pattern decp = Pattern.compile("_\\d+$");

Integer max = List.of("aaa_3", "bbb_12", "ccc", "ddd_32zz", "eee_7")
.stream().filter(e->taildec.matcher(e).matches())
.map(e->ReturnalConsumer.of(Matcher.class).with(Matcher::find).get(decp.matcher(e)).group().substring(1))
.map(Integer::parseInt)
.max(Comparator.naturalOrder()).get();

これで結果、Integer max の値は 12 である。

もし、末尾が、"_"+数 の要素が存在しないリストを
考慮するなら、、
 .max(Comparator.naturalOrder()).get();
の部分は、
 .max(Comparator.naturalOrder()).orElse(null);
にする必要があり、 Integer 型を結果にすべきである。