当前位置: 首页 > 知识库问答 >
问题:

Java流的大O时间复杂性?

柴霖
2023-03-14
    return robots.stream()                                                                      // start streaming the values in the list
            .filter(robot -> !robot.isBusy())                                                   // only keep the robots that aren't busy
            .sorted(Comparator.comparingDouble(robot -> robot.getLocation().dist(location)))    // sort by distance to job location
            .limit(needed)                                                                      // max out at the needed robots for the job
            .collect(Collectors.toList());                                                      // put the values into a list
}

共有1个答案

丰岳
2023-03-14

流计算在很大程度上依赖于所执行的操作。如果您正在执行任何中间操作(如filter和sorted),方法调用将几乎立即返回,只有在调度要执行的操作之后。当您调用终端操作时,计算实际上开始,终端操作(如forEach、collect和reduce)在整个过程完成之前不会返回。这部分需要实际的时间,我在这里列出了多少

筛选一个流需要O(n)个时间,其中n是筛选之前(而不是之后)流中的元素数

在少于O(nlogn)的计算中不能对任何东西进行排序,其中n是流中的元素)

 类似资料:
  • 我知道,对于迭代,递增。

  • 以下代码的时间复杂度是多少? 在嵌套循环中,如果外循环1需要O(1)时间,内循环2需要O(logn)时间,内循环3需要O(n)。那么总的tc是O(1)O(logn)O(n)=O(nlogn)。这是真的吗? 请解释一下。

  • 问题内容: 我打算对StringBuilders中的最后一个字符进行很多删除。使用的解决方案对我来说很好。但是,由于这些删除将处于循环中,因此我需要知道其复杂性。 据我了解,该操作只是减少了StringBuilder对象的一些私有属性,并且不对字符本身执行任何复制/克隆/复制操作,因此它的时间为O(1),应该可以快速运行。 我对吗? 问题答案: 从文档中: 设置字符序列的长度。序列更改为新的字符序

  • 在最近的一次测试中,我们得到了一个函数来计算未排序的ArrayList中出现了多少个double(不是原语double,而是一个项目出现了两次)。 我正确地确定了Big O复杂度为O(N^2),但由于我错误地确定了全部复杂度,因此只获得了部分学分。函数如下: 在他刚刚发布的考试解决方案中,他给出了这样的解释: 输入集合中有N个项,该方法通过一个缩减步骤反复调用自己,该步骤生成一个新索引N次,直到达

  • 问题内容: 是Java中的数组还是列表?什么是get操作的时间复杂度,是它还是? 问题答案: 一个在Java是一种由一个支持。 该方法是恒定时间的操作。 直接从Java库获取以下代码: 基本上,它只是直接从后备数组中返回一个值。()也是固定时间)

  • Java中Math.sqrt实现的时间复杂性是什么?Java在某种技术中实现了时间复杂性,我正在试图确定这些技术的时间复杂性。