gpt4 book ai didi

Java8 整数流与 IntStream

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:15:54 25 4
gpt4 key购买 nike

使用以下代码,我遇到了以下编译错误。我还尝试使用 input 作为 Integer 列表而不是 int[] 并且它工作正常。如果我使用 boxed(),它也能正常工作。

我的问题真的是,如果是 Int Stream,它是否必须是 Integer 流,以及如何处理错误消息“lambda 表达式 int[] 中的错误返回类型无法转换为 int”

public static void main(String[] args) {
int[] numbers = {1,2,3,4};

List<int[]> result1 = Arrays.stream(numbers).flatMap(chara -> Arrays.stream(numbers)
.map(operand -> new int[]{1, 2})).collect(Collectors.toList());
}

Error:(13, 49) java: incompatible types: bad return type in lambda expression int[] cannot be converted to int Error:(13, 66) java: method collect in interface java.util.stream.IntStream cannot be applied to given types; required: java.util.function.Supplier,java.util.function.ObjIntConsumer,java.util.function.BiConsumer found: java.util.stream.Collector> reason: cannot infer type-variable(s) R (actual and formal argument lists differ in length)

最佳答案

I also tried using input as List of Integer instead of int[] and with that it is working fine. It is also working fine if I use boxed()

所以,这基本上意味着您已经尝试过:

List<int[]> result1 = numbers.stream() 
.flatMap(chara -> numbers.stream()
.map(operand -> new int[]{1, 2}))
.collect(Collectors.toList());

给定的数字是 List<Integer> .

和:

List<int[]> result1 = Arrays.stream(numbers)
.boxed()
.flatMap(chara -> Arrays.stream(numbers).boxed()
.map(operand -> new int[]{1, 2}))
.collect(Collectors.toList());

给定的数字是 int[] .

是的,这确实可以编译但是这根本不可读,并且肯定有更好的方法来生成相同的结果(在帖子后面显示)。

至于编译错误,那是因为Arrays.stream(numbers)生成 IntStream而你正试图 map引用类型 ( int[] ) 而不是原始类型 int IntStream#map 的功能期望。即使您要通过执行 Arrays.stream(numbers).boxed().. 来解决该问题仍然会有另一个问题。

你的代码几乎是这样的:

Stream.generate(() -> new int[]{1, 2})
.limit(numbers.length * numbers.length)
.collect(Collectors.toList());

或:

IntStream.rangeClosed(1, numbers.length * numbers.length)
.mapToObj(n -> new int[]{1, 2})
.collect(Collectors.toList());

但以一种更惯用可读高效的方式。

关于Java8 整数流与 IntStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51505307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com