首页 > 解决方案 > 将原始 int、long、double 收集到列表中的最佳方法

问题描述

假设我有一个包含多个字段的数十亿对象列表,我需要从这些满足特定条件的对象中收集一个 int 字段。
由于可能有 n 个项目(动态长度数据),所以我不能直接在原始 int[] 下收集它们,并将它们的维度设置为某个值。
例如:int collect[] = new int[1_000_000_000]- 不会工作!
由于它会保留并浪费大量内存,所以我需要一个动态集合数据结构,如链表。但是它们的问题是它们会导致很多不必要的自动装箱和取消装箱,当我将对该 int 值进行操作时。

收集它们的最佳方法是什么,以便没有将 int 包装(自动装箱)到 Integer {因为它会增加不必要的 GC 工作},并且内存使用量尽可能低。

标签: javadata-structures

解决方案


也许你可以尝试类似的东西listOfBillion.stream().filter(your condition here).collect()


推荐阅读