我试图使用流来展平多维字符串数组。我可以用循环来做,但溪流似乎是更惯用的方式。我知道this question,但使用整数特定方法。以下内容返回一个对象数组,而不是预期的String[]
。
String[][][] sources = new String[][][]{
{{"a","b","c"},{"d","e","f"}}
{{"g","h","i"},{"j","k","l"}}
};
String[] values = Arrays.stream(sources[0])
.flatMap(Arrays::stream)
.toArray();
答案 0 :(得分:4)
要使您当前的示例编译,toArray
应为:
String[] values = Arrays.stream(sources[0])
.flatMap(Arrays::stream)
.toArray(String[]::new); // <----------------------
如果您想为sources
执行此操作,则需要使用flatMap
两次,然后使用.toArray(String[]::new)
收集到数组:
String[] values = Arrays.stream(sources)
.flatMap(Arrays::stream)
.flatMap(Arrays::stream)
.toArray(String[]::new);