展平嵌套的字符串数组

时间:2018-06-11 17:22:32

标签: java

我试图使用流来展平多维字符串数组。我可以用循环来做,但溪流似乎是更惯用的方式。我知道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();

1 个答案:

答案 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);