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

我的对象列表应该有多大才能保证使用java 8的并行流?

西门京
2023-03-14

我有一个来自数据库的对象列表,我想使用Stream类的filter()方法过滤这个列表。新对象将不断添加到数据库中,因此对象列表可能会变得非常大,可能有数千个对象。我想使用并行流来加快过滤过程,但我想知道对象列表应该大约有多大才能使用并行流。我已经阅读了这个线程:我应该在可能的情况下始终使用并行流吗?在这个线程中,他们同意如果您想从使用并行流中获得任何好处,数据集应该非常大。但是多大是大?假设我有200条记录存储在我的数据库中,我检索它们进行过滤,在这种情况下使用并行流是否合理?如果不是,数据集应该有多大?1000?2000也许?我很想知道。谢谢你。

共有2个答案

丌官子安
2023-03-14

摘自《现代java在行动》:“虽然一开始看起来很奇怪,但过滤集合的最快方法通常是将其转换为流,并行处理,然后将其转换回列表。”

沙岳
2023-03-14

根据这一点,根据操作情况,它至少需要10_000,但不需要元件;取而代之的是N*Q,其中N=元素数量,Q=每个元素的成本。

但这是一个你反对的一般公式,如果不进行测量,这几乎是不可能的(请阅读这里的猜测);适当的测试将证明你是对是错。

对于一些简单的操作,实际上需要并行处理以提高速度的情况几乎永远不会发生。

这里要提到的其他一些事情是,这在很大程度上取决于源——拆分的难易程度。任何基于数组或基于索引的东西都很容易拆分(而且速度很快),但QueueFile中的行则不然,因此您可能会损失更多的拆分时间而不是计算时间,当然,除非有足够的元素来涵盖这一点。并且您实际衡量的东西足够了。

 类似资料:
  • 我有一个Java类,它有20个属性及其相应的getter和setter。还有两个对象列表:和。 使用Java 8: 但是我必须在哪个地方指定属性呢?是否应该重写和方法?

  • 我有两个包含该类对象的列表: 我想通过学生比较一下那两个列表中的对象。我得比较一下列表然后得到下面的数据 我需要创建一个新列表,其中包含中存在但不在中的 对象 我需要创建一个新列表,其中包含那些对象,这些对象存在于中,但不存在于中 我需要创建一个新列表,其中包含使用java8流出现在两个列表中的对象 我尝试使用下面的代码 查找获得TC的学生(存在于列表1中但不存在于列表2中) 查找新的许可(存在于

  • 例如,这可能会成功,也可能不会成功(我使用的是Java1.6.6 SDK): 从可以读取特定存储桶的用户开始 清除用户策略(列出策略,然后对每个策略调用“DeleteUserPolicy”) 等待,直到用户没有用户策略(调用“ListUserPolicies”,直到它返回一个空集) 尝试从存储桶读取(这将失败) 如果我在#3和#4之间放入一个断点,等待几秒钟,用户就无法从桶中读取,这正是我所期望的

  • 我试图理解Java8流。我有两门课: 以及: 字段应指示全天的卡路里总量是否为。该字段与当天的所有条目相同。 我试图从

  • 我有一个学生名单a和学生名单B。 学生对象包含如下字段:否、年龄、城市、出生日期、工资 我的列表A包含这些对象 我的列表B包含这些对象 我想做的是提取ListA有但listB没有的学生对象,以及ListA和listB有但薪水不同的学生对象(如否、年龄、城市)。我还想写工资差异。 我想在java 8中使用流api。首先,我想将students对象提取到列表中,但我现在可以提取常见的student对象

  • 我有一张这样的清单 其中Objecto是此类型的对象 //接球手和接球手 } 我想将列表合并成如下的哈希图 我可以使用java 8 lambda来实现它吗?或者通过任何其他方式? 非常感谢!