訳あって String を確実に作れるカンマ区切りの文字列と単独の宣言済の String 数個 から
単独の宣言済の String を先頭に、String を作ることに少し悩みました。
例えば、、
String str = "a,b,c"; String h1 = "1"; String h2 = "2"; String h3 = "3"; String[] ary = Arrays.stream(str.split(",")) .collect(()->Arrays.asList(h1, h2, h3), (t, u)->t.add(u), (t,r)->r.addAll(t)) .toArray(new String[]{});
と思いつきで考えたのですが、これは、Arrays.asList が、固定長のリストを返してしまうので
その後の add で UnsupportedOperationException が発生してしまいます。
しかたなく、終端操作の Supplier の中で Stream で Listを生成してやることにしました。
String[] ary = Arrays.stream(str.split(",")) .collect(()->Arrays.stream(new String[]{h1, h2, h3}).collect(Collectors.toList()) , (t, u)->t.add(u) , (t,r)->r.addAll(t) ).toArray(new String[]{});