使用以下代码,我得到以下编译错误。我还尝试使用输入作为整数列表,而不是int[],这样做效果很好。如果我使用box(),它也可以正常工作。
我的问题真的是如果Int Stream必须是整数流,以及如何处理错误消息“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());
}
错误:(13,49)java:不兼容的类型: lambda表达式int[]中的错误返回类型无法转换为int错误:(13,66)java:接口中的方法收集java.util.stream.IntStream无法应用于给定的类型;必需:java.util.function.供应商,java.util.function.ObjInt消费者,java.util.function.Bi消费者找到:java.util.stream.收集器
我还尝试使用输入作为整数列表,而不是int[],这样做效果很好。如果我使用boxed()
所以,这基本上意味着你已经尝试过:
List<int[]> result1 = numbers.stream()
.flatMap(chara -> numbers.stream()
.map(operand -> new int[]{1, 2}))
.collect(Collectors.toList());
给定的数字是一个列表
和:
List<int[]> result1 = Arrays.stream(numbers)
.boxed()
.flatMap(chara -> Arrays.stream(numbers).boxed()
.map(operand -> new int[]{1, 2}))
.collect(Collectors.toList());
给定的数字是一个整数。
是的,这确实可以编译,但根本不可读,而且肯定有更好的方法来生成相同的结果(稍后将在文章中显示)。
至于编译错误,那是因为数组。流(数字)生成一个IntStream
,您试图将映射到引用类型(
int[]
),而不是映射到IntStream
函数所期望的基元int
。即使您要通过执行数组来解决这个问题。流(数字)。装箱()
接下来还有另一个问题。
您的代码主要做的是:
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的新手,不能使用流将一个数组映射到另一个二维数组。 和包含键的第二个数组。 0表示:从模式中取0元素 1表示:从模式中取1元素,以此类推 从这两个数组中,我想生成另一个二维数组。在这种情况下,结果如下所示: 请帮忙
我的问题是如何使用Completable Future。 我有一个实现Callable的类。 早点用来做—— 这将返回
1 Java8 Stream流式编程的介绍 Java在Java 8中提供了一个新的附加程序包,称为java.util.stream。该软件包由类,接口和枚举组成,以允许对元素进行功能样式的操作。您可以通过导入java.util.stream包来使用流。 Stream提供以下功能: 流不存储元素。它只是通过计算操作的流水线从数据结构,数组或I/O通道等源中传递元素。 流本质上是功能性的。对流执行的操
我想得到以下数据结构:Map 给定的是一个包含字段als原语(位置、目标、距离)或作为键(位置)加映射(目标)的类。从每个独特的位置,一个人可以瞄准多个目的地(按距离)。 关于第二个代码段:结果应该与第一个代码中的结果相同。唯一的区别是,LocationPair中提供的数据已被进一步处理,因此目的地和距离已被放入其目标地图中。 我知道这一定是可能的,但不知何故,我无法弄清楚如何完成它。上面的流代码
此问题是之前问题的后续:使用Streams添加BigDecimals 这个问题与使用Java8和Lambda表达式添加有关。在实现给出的答案后,我遇到了另一个问题:每当流为空时,方法都会抛出一个。 考虑下面的代码: 香草Java代码对空集合没有问题,但是新的Java8代码有问题。 在这里避免NSEE最优雅的方式是什么?当然,我们可以做到: 但是有没有一种Java的方法来处理空集合?