将流转换为列表

时间:2016-08-01 10:10:12

标签: java java-stream

我想将流转换为列表。为此,我尝试了这段代码:

try(Stream<String> stream = Files.lines(Paths.get(args[0]))) {
    List<String> lines =  stream.collect(Collectors.toList());
}

然后编译器告诉我:

  

类型不匹配:无法从List<Object>转换为List<String>

我也是这样试过的:

try(Stream<String> stream = Files.lines(Paths.get(args[0]))) {
    List<String> lines =  Stream.of(stream).collect(Collectors.toList());
}

但是我有这个错误:

  

这种接口Stream的静态方法只能作为Stream.of

访问

每当我使用Stream.of方法时,每次都会发生。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

似乎您使用的Java编译器语言级别低于8。 尝试使用

从命令行进行编译
javac -source 8

同时检查IDE中的语言级别项目设置。

例如,IDEA 2016的输出隐藏了有关已使用语言级别的信息,但提供了有关javac版本的信息

  Information:Using javac 1.8.0_101 to compile java sources
    Information:java: Errors occurred while compiling module 'demo_04'
    Information:8/1/16 2:13 PM - Compilation completed with 1 error and 0 warnings in 1s 403ms
    /tmp/1/src/JavaStreamExample.java
    Error:(16, 49) java: incompatible types: java.util.List<java.lang.Object> cannot be converted to java.util.List<java.lang.String>