pushArguments.par.foreach(
recFilesToPush => push(recFilesToPush).par.foreach {
case (subsId, pid, sid) =>
println(s"\n ----------- FINISHED PUSHING -------------- \n sid = $sid \n pid = $pid & subsid = $subsId")
其中push方法实现如下:
def push(desiredPushArguments: List[PusherParams]): ParSeq[(Int, Int, Long)] = {
desiredPushArguments.par.flatMap(
x => {
x.sessionStreamsDelayFromAuth = 0
sendSessionAndReturnDetails(x)
})
}
我已经开始将其翻译成java:
pushArguments.add(new ArrayList<PusherParams>(Arrays.asList(pp)));
pushArguments.parallelStream().forEach(argument->push(argument));
现在,当我停留在案例有3个值(subsId,pid,sid)的那部分上时,该值是从push方法返回的,我通过这种方法将其转换为java(部分):
public ParallelSequence push(List<PusherParams> desiredPusherArguments){
System.out.println("Gaga");
// System.out.println(desiredPusherArguments.parallelStream().flatMap(x -> desiredPusherArguments.stream()));
// System.out.println(desiredPusherArguments.parallelStream().flatMap(x -> {x.sessionStreamsDelayFromAuth,sendSeesionAndReturnDetails(x)} );
}
其中ParallelSequence是一个包含三个成员变量的类:subsId,pid,sid
但它没有按预期工作.
解决方法:
>您编写了公共ParallelSequence推送,这意味着您希望返回的不是ParallelSqeuence类型.
>您正在尝试打印对象,在这种情况下,您需要打印每个结果,并且需要在lambda表达式内移动打印.
因此,您可以执行以下操作使其运行:
public void push(List<PusherParams> desiredPusherArguments){
desiredPusherArguments.parallelStream()
.flatMap(x -> desiredPusherArguments.stream())
.forEach(i -> System.out.println(i.getSomProp()));
}