如何使用Java 8中的lambdas和stream检查integer类型的所有元素是否在给定范围内?

J.O*_*sen 3 java lambda java-8 java-stream

给定int [] A.尝试使用数组中的所有元素大于或等于-1000且不大于1000(包括).怎么做得好?

我的尝试:

boolean validIntegers = (Arrays.asList(A)).stream().allMatch(i -> (i >= -1000 && i <= 1000) );
Run Code Online (Sandbox Code Playgroud)

错误:

在此输入图像描述

Psh*_*emo 6

Arrays.asList接受,T...T作为泛型类型只能表示对象int[],而不是原始对象int.所以T...代表{int[]}数组,它包含内部数组对象,而不是数组元素.所以你的流包含数组,你不能在数组上使用任何比较运算符.

要解决此问题并获取存储在ints 数组中的元素流,您可以使用

  • IntStream.of(int...),
  • Arrays.stream(yourArray)支持double[] int[] long[]T[].

所以你的代码可能是

boolean validIntegers = IntStream.of(A).allMatch(i -> (i >= -1000 && i <= 1000) );
Run Code Online (Sandbox Code Playgroud)