猿问

Java8中可以对两个不同的Streams进行比较操作吗?

我有两个 Integer 数组流,我想检查第一个流的所有元素是否都小于第二个。与 Python 元组一样,我们可以比较具有相同索引的两个不同元组的元素。


if (ry, rm, rd) <= (ey, em, ed):

print(0)

例如,在这里,我们可以用一个运算符比较所有元素。我想在 java 中实现相同的目标。


我们可以对 java 流做类似的事情吗?


boolean check(int a1[],int a2[])

{

    boolean flag= true;

    IntStream s1 = Arrays.stream(a1);

    IntStream s2 = Arrays.stream(a2);

    Iterator<Integer> it1 = s1.iterator();

    Iterator<Integer> it2 = s2.iterator();

    while(it1.hasNext() && it2.hasNext())

    {

        if(it1.next() > it2.next())

            flag = false;

    }

    return flag ;

}

有没有更好的方法来做到这一点?


ITMISS
浏览 169回答 2
2回答

弑天下

通过使用IntStreamandallMatch如果两个数组a1和a2的长度相同。如果你会得到相同的预期结果,你仍然可以给出较小尺寸数组的最大长度int[] a2 = { 1, 2, 3 };int[] a1 = { 0, 1, 2 };int[] a3 = {0,1};boolean result = IntStream.range(0, a1.length).allMatch(i -> a1[i] < a2[i]);// using less than or equal toboolean result1 = IntStream.range(0, a3.length).allMatch(i -> a3[i] <= a1[i]);System.out.println(result);&nbsp; &nbsp; //trueSystem.out.println(result1);&nbsp; &nbsp; //true以同样的方式,您也可以anyMatch在反向条件下使用,这样您就不需要在失败案例后遍历整个流boolean result2 = IntStream.range(0, a1.length).anyMatch(i->a1[i]>a2[i]);

慕尼黑5688855

您可以使用 Guava Streams 压缩两个流并在 Bi-Function 中比较它们。Stream<Integer> aStream = Stream.of(0, 2, 3);        Stream<Integer> bStream = Stream.of(1, 1, 3);        System.out.println(Streams                                .zip(aStream, bStream, (i, j) -> i >= j)                                .allMatch(b -> b)                        );
随时随地看视频慕课网APP

相关分类

Java
我要回答