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

如何在Java8中使用lambdas和streams检查integer类型的所有元素是否在给定范围内?,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,给定int[]A。试图使用数组中的所有元素大于或等于-1000,但不大于1000(包括)。如何做好这件事 我的尝试: boolean validIntegers = (Arrays.asList(A)).stream().allMatch(i -> (i >= -1000 && i <= 1000) ); boolean validIntegers=(Arrays.asList(A)).stream().allMatch(i->(i>=-1000&&p>Arr

给定int[]A。试图使用数组中的所有元素大于或等于-1000,但不大于1000(包括)。如何做好这件事

我的尝试:

boolean validIntegers = (Arrays.asList(A)).stream().allMatch(i -> (i >= -1000 && i <= 1000) );

boolean validIntegers=(Arrays.asList(A)).stream().allMatch(i->(i>=-1000&&p>
Arrays.asList
接受
T..
但是
T
作为泛型类型只能表示
int[]
这样的对象,而不能表示原语
int
。因此
T..
表示
{int[]}code>
array,它内部包含数组对象,而不是数组元素。因此,您的流包含数组,您不能对数组使用任何比较运算符

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

  • IntStream.of(int…)
  • 或者
    Arrays.stream(yourArray)
    支持
    double[]
    int[]
    long[]
    T[]
所以你的代码可能是

boolean validIntegers = IntStream.of(A).allMatch(i -> (i >= -1000 && i <= 1000) );

boolean validIntegers=IntStream.of(A).allMatch(i->)(i>=-1000&&i)或just
Arrays.stream(A).allMatch(i->)(i>=-1000&&i@Mureinik)感谢您将其包含在回答中。