Stream の reduceで文字列を長さで分割

今時、電文など固定長文字列でデータ設計するところは少ないであろう。
文字列の長さ、(4, 2, 6, 6) と4個の並びであるとして、18の長さの文字列を分割するのに、
Streamreduce を使うと、わりとスマートに書ける。

List<String> list = new ArrayList<>();
List.of(4, 2, 6, 6).stream().reduce(0, (a, b)->{
    list.add(str.substring(a, (a+b)));
    return a+b;
});