如何拆分字符串流并生成字符串数组列表?

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)

它显示......我仍在努力想出流.

Ous*_* D. 7

首先,我建议避免使用原始类型,而是使用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实现.你应该总是青睐ArrayListtoList默认返回目前虽然不能保证这样坚持,你可以用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)