由于时间复杂度取决于所有操作,因此没有通用的答案。由于必须完全处理流,因此必须将其基本时间复杂度O(n)
乘以每个元素完成的所有操作的成本。假设迭代成本本身并不比差O(n)
,大多数流源就是这种情况。
因此,假设没有影响时间复杂度的中间操作,则groupingBy
必须评估每个元素的功能,该功能应独立于其他元素,因此不影响时间复杂度(无论它有多昂贵,因为O(…)
时间复杂度仅表明我们,时间如何随着大量流元素而
缩放 )。然后,它将元素插入地图,这可能取决于已经包含的元素的数量。如果没有定制Map
供应商,则地图的类型是不确定的,因此在此无法声明。
实际上,可以合理地假设结果将是某种O(1)
默认情况下具有净查找复杂性的某种哈希映射。因此O(n)
,分组的净时间复杂度为。然后,我们有了 下游
收集器。
默认的 下游 收集器是toList()
,它会产生未指定的List
类型,因此,再说一遍,关于添加元素的成本我们无能为力。
当前的实现产生一个ArrayList
,当超出容量时必须执行复制操作,但是由于每次都会将容量提高一个 因数 ,因此O(n)
添加 n个
元素仍然存在净复杂性。可以合理地假设,将来对toList()
实现进行更改不会使成本比我们今天要差。因此,默认groupingBy
集合的时间可能很复杂O(n)
。
如果我们将自定义Map
收集器与自定义下游收集器一起使用,则复杂度取决于平均组数与每个组中元素的数量之比。最坏的情况是地图查找和下游收集器的元素处理(元素数量的乘积)中的最坏情况,因为我们可以有一个包含所有项目的组,或者每个项目都在自己的组中。
但是通常,您能够预测特定分组操作的偏差,因此,您将希望计算该特定操作的时间复杂度,而不是通常依赖于所有分组操作的声明。
我在流中使用分组: 1:我想知道如何在Collect方法中使用“Grouping By”两次。 2:其次,在分组中定义退货类型的策略是什么? 1: 错误消息: 1:线程“main”java中出现异常。RuntimeException:不可编译的源代码-不兼容的类型:推理变量D具有不兼容的等式约束。字符串,java。lang.Integer在collectorsinjava。收藏家辛加瓦。main(
问题内容: 这给出了预期的结果 这有效 但是如果我们将其更改为 我收到“ TypeError:无法将复数转换为浮点数”。 如果现在我们省略显式的,我将得到“ ValueError:设置具有序列的数组元素”。 有人可以解释发生了什么,以及如何做到无误吗?我迷路了。 问题答案: 要插入complex或in ,您显然需要将其视为数组,因此可以将其索引或分配给的一个切片: 看来NumPy无法正确处理这种情
我最近刚开始使用API和http请求,我正试图构建一个应用程序,使用Reddit API在特定的子编辑上拉帖子。 这是我正在练习的带有json和搜索参数的页面:https://www.reddit.com/r/hiphopheads.json?limit=1 查看Golang的JSON模块的标准库,我仍然不知道如何使用JSON。解组此复杂JSON。根据我收集到的信息,我必须定义一个类似于JSON结
主要内容:GWT 复杂组件 介绍,GWT 常用的复杂组件GWT 复杂组件 介绍 表单小部件允许用户与应用程序进行高级交互功能。每个 Complex 小部件都从 Widget 类继承属性,而 Widget 类又从 UIObject 继承属性。 小组件 描述 GWT UIObject类 此小部件包含文本,不会使用 <div> 元素将其解释为 HTML,从而使其以块布局显示。 GWT Widget类 此小部件可以包含 HTML 文本并使用 <div> 元素显
我在谷歌工作表中工作,数据通过谷歌应用程序脚本从NPM中提取。我在尝试提取数据并获取下载计数的时间段上进行迭代。我正在尝试创建一个图表,显示
有时您希望筛选具有多个条件的: 也可以使用复杂条件和单个: 第一种方法在可读性方面胜出,但在性能方面,什么更好呢?