从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类中的任何属性

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...