- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
使用以下代码,我遇到了以下编译错误。我还尝试使用 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/
我想转换 List到IntStream 。假设我的列表类似于 ["abc", "de", "fghi"] 。然后IntStream我想要的就像 1,1,1,2,2,3,3,3,3 。 (数字 i 在
我使用 Java 8 流代替许多旧式 for 循环来迭代一堆结果并生成摘要统计信息。例如: int messages = IntStream.rangeClosed(0, 7).map(ids::ge
IntStream.range(x,y) 会从 x(inclusive) 和 y(独家)。IntStream.rangeClosed(x,y) 会从 x(inclusive) 和 y(inclusiv
是否可以使用 IntStream 但使用索引遍历 int 数组? 尝试做这样的事情: ByteBuf buf = ...; int[] anArray = ...; IntStream.of(anAr
我已经知道只有 IntStream和 LongStream .我如何制作 IntStream从字节数组? 目前我打算这样做。 static int[] bytesToInts(final byte[]
public static void randomSquare() { int[] array = new Random().ints(10).toArray(); for (int
我有一个接受 ArrayList 的方法的int[]数组。如果我用 ArrayList 调用该方法一个int[]数组,它应该简单地返回 int[] 数组中两个值之间的差。使用流媒体,我已经 stati
我有一小段代码可以计算给定数组中正值、负值和零值的数量。我可以使用 Java 7 轻松完成此操作,方法是迭代数组并计算正值、负值和零值的数量。但是对于Java 8流,在map函数中编写条件是否正确?目
我正在尝试创建一个无限的素数 IntStream,并且它必须很快 - 在几秒钟内生成大约一百万个素数。所以我尝试创建使用过滤器调用生成的流IntStream本身: IntStream primeStr
如何使用 IntStream 在步骤(3)中迭代一系列数字 (0-100)? 我尝试迭代,但这永远不会停止执行。 IntStream.iterate(0, n -> n + 3).filter(x -
Java Instream 我需要二维数组中元素的索引,该数组具有空值。我可以使用对于我在下面做的一维数组,它起作用了: IntStream.range(0, myArr.length)
当你有 Stream.of(1 ,10).reduce(0,(v1, v2) -> v1 + v2); 对比 IntStream.of(1 ,10).reduce(0,(v1, v2) -> v1 +
我写了一些代码来创建一个 List来自Stream>像这样: List abc = stream.flatMap(e -> e.stream()). collect(Collectors.to
使用以下代码,我遇到了以下编译错误。我还尝试使用 input 作为 Integer 列表而不是 int[] 并且它工作正常。如果我使用 boxed(),它也能正常工作。 我的问题真的是,如果是 Int
Java 8 有一个新接口(interface),名为 IntStream。我使用了它的of()静态方法,遇到了一个奇怪的错误: This static method of interface Int
我想创建一个 List数值为 72-129 和 132-200。我考虑过使用 IntStream并将值映射到字符串并收集到列表。我使用了这段代码: List strings72to200 = Stre
如何使用 IntStream 在步骤 (3) 中遍历数字范围 (0-100)? 我试过 iterate,但这永远不会停止执行。 IntStream.iterate(0, n -> n + 3).fil
例子; IntStream a = create(3, 1); // => [0,0,1] IntStream b = create(5, 2); // => [0,0,0,0,2] 第一个流给出
这个问题在这里已经有了答案: Return from lambda forEach() in java (5 个答案) 关闭 5 年前。 下面是我的普通 for 循环,我想重构相同的代码以使用 ja
这个问题在这里已经有了答案: Adding two Java 8 streams, or an extra element to a stream (8 个答案) 关闭 5 年前。 我正在尝试获取某
我是一名优秀的程序员,十分优秀!