【问题标题】:Will using java stream for filtering out large sets of data cause a performance decrease?使用 java 流过滤大量数据会导致性能下降吗?
【发布时间】:2020-04-01 20:45:15
【问题描述】:

假设我有成千上万的数据要处理。

我的班级看起来像

public class Group
{
   String id;
   String name;
}

以及这些组的列表。

List<Group> groups = new Arraylist<>();

我想确保此列表中没有任何没有名称的组。

所以我可以想到两种方法

  1. 当我在循环数据时,我可以决定是否将它放在这个列表中开始

  2. 我可以保持代码简单,直到最后需要过滤掉列表。

选项 2 是这样的:

groups.stream.filter(g -> !StringUtils.isBlank(g.name)).collect(Collectors.toList());

有没有首选的方法?优点和缺点?选项 2 将使我的代码看起来更干净,但是我很担心,因为数据集可能非常大,并且遍历一个大列表可能会降低性能..

【问题讨论】:

    标签: java list java-stream


    【解决方案1】:

    我的看法:
    我会推荐 #1,这样您就不会在不相关的数据上浪费内存。
    它的性能也更好。

    但这只是因为您在谈论“相当大”(“数十万”)。对于小型列表,代码清晰可能更可取。如果列表可以小或大,那么大的代码,否则内存过载和/或性能可能会杀死/冻结应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 2014-02-19
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      相关资源
      最近更新 更多