java - 内存分配原始流与原始类型表

标签 java java-stream

我的问题:我正在从 JFreeChart 数据库下载大量数据。我想在不使用原始表的情况下优化数据内存使用。

使用集合需要使用对象。 我想知道是否可以使用像 IntStream 这样的原始 Stream 来优化内存使用而不是例如 LinkedList<Integer> .

我不知道如何制定可靠的基准。

最佳答案

如果您的起点是 LinkedList<Integer> ,只需将其替换为 ArrayList<Integer>将显着减少内存消耗,如 When to use LinkedList over ArrayList? 中所述。 。由于装箱的整数是小对象,其中一些甚至在装箱相同的值时会被重用,因此 this answer 的图具有重要意义。

如果你想让它更简单,只需使用 int[] 。如果您需要可以增量填充的内容,Stream API 确实有一个选择。使用 IntStream.builder() 获得 IntStream.Builder 您可以重复添加新的 int值(value)观。一旦包含所有值,您可以调用 build().toArray()就可以得到 int[]包含所有值的数组,也可以直接对 IntStream 进行过滤和聚合操作返回者 build() (如果你可以将聚合运算表示为归约)。

关于java - 内存分配原始流与原始类型表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44949322/

相关文章:

java - 解决 IBM MQ 独立应用程序中的 MQRC 2195 错误

java - 如何将 android 中的文件保存到我的 Dropbox 目录?

java - 如何计算文本文件中的单词数,java 8-style

java - 为什么Java8中的map不能创建流?

java - MySQL使用Statement.RETURN_GENERATED_KEYS时出错

java - 导出 (Eclipse) 可执行 jar 文件中的 UnsatisfiedLinkError

java - 如何使用 Streams API 取消扁平化的层次结构

java - 最后处理某些流元素

java - 使用 Java 8 流对多个变量列表进行排序

java - 无法使用 Java Robot 类输入分号