java - Java:用于存储 900,000 个客户编号的集合
问题描述
对于其中一个用例,我想存储大约 900,000 个客户号码来进行洗牌。它将有 2 列 - 一个是原始客户编号,另一个是经过洗牌的客户编号。
使用 Java 的最佳方法是什么,这样我就不会遇到内存异常或 GC 开销?
谢谢。
解决方案
如果一个数字只有 4 个字节,存储 900k 个数字并不多。如果超出堆,您还可以使用增加 Java 中的堆大小来增加堆大小。
如果您的数据增长并且您需要大量空间,那么您可以使用像http://www.mapdb.org/这样的堆外数据结构。它们提供 List 或 Set 或 Map 接口的实现,但将一些数据保存到磁盘而不是堆。
推荐阅读
- vue.js - Bootstrap-vue 复选框,选中时检查附加选项
- angular - 加载初始数据时,等待用户身份验证返回 ID 然后使用该 ID 从服务中检索数据的最佳方法是什么?
- codeigniter - 使用代码点火器删除数据不起作用
- android - CMake FindPackage 对于自定义构建的 boost 库失败
- angular - 如何将带有 Angular 表单数据的对象列表发布到 .Net Core Web API
- node.js - Angular Universal - 部署到 AWS Elastic Beanstalk
- terraform - 如何在虚拟网络中调用资源组资源组参数来自CSV文件
- c# - 我怎样才能要求一个类将持有一种类型的内部对象
- javascript - 如何在不将日期视为 UTC 的情况下将 yyyy-mm-dd 格式的字符串转换为 Javascript 日期对象
- typescript - 如何使用 aws cdk 管理多个环境?