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

收集原始int、long和double到列表中的最佳方法

太叔景曜
2023-03-14

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

收集它们的最佳方式是什么,这样就不会有int到Integer的包装(自动装箱){因为这会增加不必要的GC工作},并且内存使用量尽可能少

共有1个答案

孟谭三
2023-03-14

也许你可以试试《百万富翁名单》。stream()。过滤(你的情况在这里)。collect()

 类似资料:
  • 问题内容: 有没有办法在Java中创建原始int或任何原始类型的列表,如下所示? 看来我能做到 并将“ int”添加到此列表中。但这意味着我可以在此列表中添加任何内容。 我唯一的选择是创建一个int数组并将其转换为一个列表或创建一个Integer对象的列表吗? 问题答案: 在Java中,任何变量的类型都是原始类型或引用类型。泛型类型参数必须是引用类型。由于基元不扩展,因此它们不能用作参数化类型的泛

  • 问题内容: 这可能是一个简单的,总机问题,但我的第一次尝试令人惊讶地完全失败了。我想获取一组原始的long并将其转换成一个列表,我试图这样做: 什么是正确的方法? 问题答案: 我发现使用apache commons lang ArrayUtils(JavaDoc,Maven依赖项)很方便 它还具有反向API 编辑:更新以提供完整的转换为列表,如注释和其他修复建议。

  • 问题内容: 我有以下格式的多维列表: 如何获得所有子列表的第三个值的最大值。用伪代码: 我知道这可以通过遍历列表并将第三个值提取到新列表中,然后简单地执行来完成,但是我想知道是否可以使用lambda或列表理解来完成? 问题答案: 只需与生成器表达式一起使用: 另外,不要命名您的变量,而是要隐藏类型。

  • 考虑此代码段: 在我的机器上运行这个会打印两个转换的。但是和只能是吗? 据我所知,这是一个扩展的原语转换,规范中说: 拓宽的基元转换不会丢失有关数值的整体大小的信息。 以及 将int或long值加宽为float或将long值加宽为double可能会导致精度损失 据我所知,上述规范意味着将始终成为,但可以转换为其他内容(例如或类似内容)。我的规格解释正确吗?

  • 我很难确定何时使用int、double和long。 我正在计算整数的幂,只要提供的幂不是负数,就返回结果。 对于作业,我需要使用以下代码开始: 以下是我的想法: 我知道我弄乱了int、double或long的使用,但我不知道如何修复它。

  • 问题内容: 据我所知,在python中,至少有3到4种方法可以创建和初始化给定大小的列表: 简单循环: 简单循环: 清单理解: 列表和整数乘法: 在这些示例中,考虑到列表仅包含50个元素,我认为不会有任何性能差异,但是如果我需要一百万个元素的列表怎么办?使用make会有所改善吗?在python中创建和初始化列表的首选/最快方法是哪种? 问题答案: 让我们使用进行一些时间测试* : 从上面可以看到,