我正在开发一个应用程序,需要传递大量的Int32值。预计每个集合包含100万到5000万个项目,其中每个项目是范围在0到5000万之间的数据库键。我预计在任何给定集合中,id的分布在这个范围内是随机的。 我所需的操作非常简单:
- 添加新值 - 迭代所有值
由于这些集合的内存使用情况存在严重问题,因此我正在寻找一种可以比简单的List或HashSet更有效地存储id的数据结构。 我已经看过了BitArray,但是如果id很稀疏,它可能会浪费空间。 我也考虑过位trie,但是我不确定如何计算该解决方案对于预期数据的空间效率。 如果只能容忍误判,则Bloom Filter非常适合。
我希望得到适用于此目的的数据结构的任何建议。 我对即用型和自定义解决方案都感兴趣。
编辑:回答您的问题:
- 不需要对项目进行排序。 - “传递”意味着在方法之间传递以及序列化和发送到网络上。 我显然应该提到这一点。 - 可能会有相当多的这些集合在内存中(约100个)。
- 添加新值 - 迭代所有值
由于这些集合的内存使用情况存在严重问题,因此我正在寻找一种可以比简单的List或HashSet更有效地存储id的数据结构。 我已经看过了BitArray,但是如果id很稀疏,它可能会浪费空间。 我也考虑过位trie,但是我不确定如何计算该解决方案对于预期数据的空间效率。 如果只能容忍误判,则Bloom Filter非常适合。
我希望得到适用于此目的的数据结构的任何建议。 我对即用型和自定义解决方案都感兴趣。
编辑:回答您的问题:
- 不需要对项目进行排序。 - “传递”意味着在方法之间传递以及序列化和发送到网络上。 我显然应该提到这一点。 - 可能会有相当多的这些集合在内存中(约100个)。
LinkedList<T>
正是你想要的。 - Joseph Yaduvanshi