MWB*_*MWB 9 java incompatibletypeerror java-8 java-stream
我对溪流很新,所以请帮帮我(并且温柔).
我想做的是以下内容.我有一个BufferedReader
从一个文件读取,其中每行看起来像这样:"a,b".例如:
示例输入文件
"a,b"
"d,e"
"f,g"
我想将其转换为LinkedList<String[]>
:
例 LinkedList<String[]>
[{"a","b"},{"c","d"},{"f","g"}]
你会如何使用流方法?
这是我试过的:
List numbers = reader.lines().map(s -> s.split("[\\W]")).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
这不起作用.我的IDE提供以下反馈:
Incompatible types. Required List but 'collect' was inferred to R: no instance(s) of type variable(s) T exist so that List<T> conforms to List
Run Code Online (Sandbox Code Playgroud)
它显示......我仍在努力想出流.
首先,我建议避免使用原始类型,而是使用List<String[]>
接收器类型.
List<String[]> numbers = reader.lines()
.map(s -> s.split(delimiter)) // substitute with your deilimeter
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
你提到过你想要一个LinkedList
实现.你应该总是青睐ArrayList
其toList
默认返回目前虽然不能保证这样坚持,你可以用explcitly指定列表实现toCollection
:
List<String[]> numbers = reader.lines()
.map(s -> s.split(delimiter)) // substitute with your deilimeter
.collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)
同样适用于LinkedList
:
List<String[]> numbers = reader.lines()
.map(s -> s.split(delimiter)) // substitute with your deilimeter
.collect(Collectors.toCollection(LinkedList::new));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
962 次 |
最近记录: |