繁体   English   中英

使用 Java Stream 比较两个整数数组

[英]Compare two integer arrays using Java Stream

我有两个整数数组,例如 -

int[] a = {2, 7, 9}

int[] b = {4, 2, 8}

我想逐个元素比较它,即24然后72最后98 每个比较结果将存储在一个列表中。

这在传统的 Java 方式中很容易做到。 但我想在这里使用 Stream。 任何指针?

你可以这样做,

List<Boolean> equalityResult = IntStream.range(0, a.length).mapToObj(i -> a[i] == b[i])
                .collect(Collectors.toList());

前提条件:两个数组的大小相同。

假设两个输入数组的长度相同

List<Integer> list = IntStream.range(0, a.length).mapToObj(i -> Integer.compare(a[i], b[i]))
            .collect(Collectors.toCollection(() -> new ArrayList<>(a.length)));

与其他答案相同但略有不同

List<Integer> result = IntStream.rangeClosed(0,a.length-1)
            .boxed()
            .map(i->Integer.compare(a[i],b[i]))
            .collect(Collectors.toList());

您本质上是在寻找Zip操作的功能(Java 中尚不可用)。

因此,要获得一组布尔值,我建议:

boolean[] accumulator = new boolean[a.length];
IntStream.range(0, a.length)
         .forEachOrdered(i -> accumulator[i] = a[i] == b[i]);

和 分别获得两个数组中相应元素之间的int结果:

int[] ints = IntStream.range(0, a.length)
                      .map(i -> Integer.compare(a[i], b[i]))
                      .toArray();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM