使用Lambda(java)从1行的控制台填充int []数组

Все*_*дно 5 java arrays lambda java-8

try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
     Object[] test = Arrays.stream(br.readLine().split(" ")).map(string -> Integer.parseInt(string)).toArray();
     System.out.println(Arrays.toString(test));
} catch (IOException E) {

}
Run Code Online (Sandbox Code Playgroud)

所以这段代码可以工作,但它返回一个类型的数组Object[] 但是,我想要的是让它返回一个类型的数组int[].

有没有人知道如何才能做到这一点?

Ous*_* D. 6

要检索int类型而不是数组Object,可以使用该mapToInt方法.

int[] test = Arrays.stream(br.readLine().split(" "))
                   .mapToInt(Integer::parseInt).toArray();
Run Code Online (Sandbox Code Playgroud)

请注意,您可以通过在方法的参数内使用方法引用来简化代码mapToInt.

读:

  • 我建议你使用我上次评论的方法,但如果你真的想要一个`ArrayList`,那么使用它:`ArrayList <Integer> test = Arrays.stream(br.readLine().split("")). mapToInt(整数:: parseInt函数).boxed()收集(Collectors.toCollection(ArrayList的::新));` (3认同)
  • @ВсеЕдно你可以使用`.collect(Collectors.toCollection(ArrayList :: new))来将流转换为`ArrayList`;`但是因为`ArrayList`是`List`类型,你可以简单地使用`.collect(收集器. toList());`它将流转换为List.但是,你有什么理由不想使用`.collect(Collectors.toList());`?有关[**如何从Java 8中从Stream获取ArrayList的更多信息**](http://www.java67.com/2016/03/how-to-get-arraylist-from-stream-in-java8-example的.html). (2认同)
  • 如果你想检索`List <T>`而不是数组,那么使用它:`List <Integer> test = Arrays.stream(br.readLine().split("")).mapToInt(Integer :: parseInt ).boxed()收集(Collectors.toList(.));` (2认同)
  • @Aominè无需转换为`int`然后转换为`Integer`.简单地使用:`ArrayList <Integer> ints = Stream.of(br.readLine().split("")).map(Integer :: valueOf).collect(Collectors.toCollection(ArrayList :: new));` (2认同)