gpt4 book ai didi

java-8 - 使用 Java 8 通过 LongStream 批量处理 ArrayList

转载 作者:行者123 更新时间:2023-12-02 20:31:13 27 4
gpt4 key购买 nike

我正在尝试使用 Java 8 的 LongStream 处理具有 Long 类型内容的 ArrayList,如下面给定的示例所示,但出现以下错误。

import java.util.*;
import java.util.stream.*;

public class HelloWorld{
public static void main(String []args){
List<Long> data=new LinkedList();
for(Long j=0L;j<300L;j++){
data.add(j);
}
int BATCH = 10;

LongStream.range(0, (data.size()+BATCH-1)/BATCH)
.mapToLong(i -> data.subList(i*BATCH, Math.min(data.size(), (i+1)*BATCH)))
.forEach(batch -> process(batch));
}

static void process(List<Long> list){
System.out.println(list);
}
}

但我得到以下异常。我尝试过使用mapToLong插入 map ,但mapToLong未被识别

$javac HelloWorld.java
HelloWorld.java:13: error: incompatible types: possible lossy
conversion from long to int
.map(i -> data.subList(i*BATCH, Math.min(data.size(),
(i+1)*BATCH)))
^
HelloWorld.java:14: error: incompatible types: long cannot be
converted to List<Long>
.forEach(batch -> process(batch));
^
2 errors

最佳答案

LongStream 中的

map 应该将 LongStream 的元素映射到 long,而不是映射到列表

使用mapToObj:

LongStream.range(0, (data.size()+BATCH-1)/BATCH)
.mapToObj(i -> data.subList((int)i*BATCH, (int)Math.min(data.size(), (i+1)*BATCH)))
.forEach(batch -> process(batch));

或者:

IntStream.range(0, (data.size()+BATCH-1)/BATCH)
.mapToObj(i -> data.subList(i*BATCH, Math.min(data.size(), (i+1)*BATCH)))
.forEach(batch -> process(batch));

关于java-8 - 使用 Java 8 通过 LongStream 批量处理 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48681662/

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