Java:使用流API从基元数组生成列表
我正试图从一个基本数组中创建一个列表Java:使用流API从基元数组生成列表,java,java-8,java-stream,Java,Java 8,Java Stream,我正试图从一个基本数组中创建一个列表 int[] values={4,5,2,3,42,60,20}; List<Integer> greaterThan4 = Arrays.stream(values) .filter(value -> value > 4) .collect(Collectors.toList()); int[]值={4,5,2,3,42,60,20}; 列表大于4= Arrays.stream(值) .过滤器(值->
int[] values={4,5,2,3,42,60,20};
List<Integer> greaterThan4 =
Arrays.stream(values)
.filter(value -> value > 4)
.collect(Collectors.toList());
int[]值={4,5,2,3,42,60,20};
列表大于4=
Arrays.stream(值)
.过滤器(值->值>4)
.collect(Collectors.toList());
但是最后一个函数collect
给了我一个错误,因为它需要其他参数。它需要三个参数:供应商、ObjIntConsumer和双消费者
我不明白为什么它需要3个参数,当我看到不同的示例只使用collect(Collectors.toList())编码>并获取列表
我做错了什么?是的,这是因为Arrays.stream
返回一个IntStream
。您可以调用boxed()
来获取流
,然后执行收集操作
List<Integer> greaterThan4 = Arrays.stream(values)
.filter(value -> value > 4)
.boxed()
.collect(Collectors.toList());
List greaterThan4=Arrays.stream(值)
.过滤器(值->值>4)
.boxed()
.collect(Collectors.toList());
您可以更改int[]值={4,5,2,3,42,60,20}
toInteger[]值={4,5,2,3,42,60,20}
因为当前您正在传递一个基元类型的数组(int
),但是如果您传递一个对象数组,即Integer
,那么您使用的是基元数组,而不是Integer
。我建议你用like
Integer[]值={4,5,2,3,42,60,20};
List al=新的ArrayList(Arrays.asList(values));
+1用于发现真正的问题和真正的解决方案
Integer[] values={4,5,2,3,42,60,20};
List<Integer> al = new ArrayList<>(Arrays.asList(values));