mapflat有什么问题

时间:2014-06-07 19:06:28

标签: java

我收到了编译错误:对于以下代码,类型Stream的方法mapflat((<no type> s) -> Arrays.stream(s.split(".")))未定义。

有什么问题?

Arrays.stream(new String[] {"a.b.c", "d.e.f"}).mapflat(s->Arrays.stream(s.split("."))).forEach(System.out::println);
}

2 个答案:

答案 0 :(得分:4)

没有mapflat方法。

您需要flatMap

<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);

该函数采用T类型(Stream类型)并返回Stream<R>,该方法返回Stream<R>

Arrays.stream(new String[] {"a.b.c", "d.e.f"}).
        flatMap(s -> Arrays.stream(s.split("."))).
        forEach(System.out::println);

另外值得注意的是String.split使用正则表达式,因此split(".")将无效。您需要使用split("\\.")

答案 1 :(得分:2)

Stream不声明或继承名为mapflat的接受单个参数的方法。