微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从Scala到Java的翻译

我有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));

现在,当我停留在案例有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代码有两个主要问题

>您编写了公共ParallelSequence推送,这意味着您希望返回的不是ParallelSqeuence类型.
>您正在尝试打印对象,在这种情况下,您需要打印每个结果,并且需要在lambda表达式内移动打印.

因此,您可以执行以下操作使其运行:

public void push(List<PusherParams> desiredPusherArguments){

    desiredPusherArguments.parallelStream()
            .flatMap(x -> desiredPusherArguments.stream())
            .forEach(i -> System.out.println(i.getSomProp()));

}

getSomeProp只是示例,可以是PusherParams类中的任何属性

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐