java - 如何在 Java 中有效地存储一组元组/对
问题描述
我需要检查长值和整数值的组合是否已经在应用程序的性能非常关键的部分中出现过。这两个值都可能变得非常大,至少在某些情况下 long 会使用超过 MAX_INT 的值。
目前我有一个使用 a 的非常简单的实现Set<Pair<Integer, Long>>
,但是这将需要太多的分配,因为即使对象已经在集合中,像seen.add(Pair.of(i, l))
添加/检查存在这样的东西也会为每个调用分配 Pair。
Java 中是否有更好的方法(没有 Guava、Trove 或 Apache Commons 等库),以最少的分配和良好的方式进行检查O(?)
?
两个 int 会很容易,因为我可以将它们组合成一个 long 在 Set 中,但 long 在这里无法避免。
有什么建议么?
解决方案
如何创建一个包含两个原语的类呢?您至少会删除64 位 JVM24 bytes
的标头Integer
和其中的标头。Long
在这种情况下,您正在寻找配对功能,或从 2 个号码中生成一个唯一号码。该维基百科页面有一个很好的例子(而且很简单)这种可能性。
推荐阅读
- perl - Perl 单行配方:即时将列表转换为“单引号中的逗号分隔字符串”或“多行”
- c# - 将数据库连接到 .net core MVC 项目
- node.js - 如何验证电子邮件是否已经在 MongoDB | 节点
- python - 为 Web 应用程序编写测试
- javascript - Angular 7 - 上传多个文件以及数据并报告进度
- seo - 将 opencart 1.5.6 迁移到 3.0.2.0 会影响 seo?
- typescript - 如何在 JSON stringify 中使用变量作为字段名称?
- c# - 如果使用 EPplus 的行,如何插入范围内的列?
- javascript - 找出由于使用不受支持的功能而导致哪些软件包中断的最佳技术是什么?
- javascript - 如何通过多个名称选择检查选定元素的值