我有一段用 Scala 编写的代码:
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));
现在,当我卡在 case 得到 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
但它没有按预期工作。
最佳答案
我不知道你想做什么,但你的 java 代码有两个主要问题
您编写公共(public)
ParallelSequence
推送,这意味着您希望返回ParallelSqeuence
类型,但事实并非如此。您正在尝试打印对象,在这种情况下,您需要打印每个结果并需要在 lambda 表达式中移动打印。
因此您可以执行以下操作以使其运行:
public void push(List<PusherParams> desiredPusherArguments){
desiredPusherArguments.parallelStream()
.flatMap(x -> desiredPusherArguments.stream())
.forEach(i -> System.out.println(i.getSomProp()));
}
getSomeProp
只是示例,可以是 PusherParams
类中的任何属性
关于java - 从 Scala 到 Java 的翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48259157/