我收到了编译错误:对于以下代码,类型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);
}
答案 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
的接受单个参数的方法。