2012-11-03 78 views
2

很多时候我必须使用java.util.collection包中的对象,这些对象符合Map和Set接口。大内存(数据大小)集合

当我向这些对象(HashMap,TreeMap等)中插入几百万个元组或实体时,它们的性能,插入和查找都变得缓慢。

我设计了派生类,它们基本上是java.util.collection中类的组合,可以在性能上更好地扩展。

我想知道是否有一个与处理大量数据而优化的java.util.collections包相当的开源代码。

+2

你为什么要创建内存中有数百万元素的地图和集合?你不能使用关系数据库与索引? –

+0

@Maciej Ziarko,在RDBMS和NoSQL Dbs中存储数百万个元素将会有很多案例/好处,但有时在内存中处理大型对象是有意义的,并且比RDBMS和NoSQL DB方法更受欢迎。一位响应者发布了一个Trove项目,我认为这是一个需求。谢谢 – user1172468

回答

4

为了更好地执行收集库,请尝试trove。但是,一般来说,您希望通过流式处理或其他形式的延迟加载来解决这些问题,以便您可以在不将整个数据集加载到内存中的情况下进行聚合等操作。

您也可以使用像Redis或CouchDB这样的关键值存储来存储这些数据。

+1

感谢您的回复,1+。是免费使用还是必须先购买它? –

+2

它是免费的,你可以去我包括的链接并下载它。 –

+0

非常感谢@PaulSanwald的回应,这正是我在寻找的 - 虽然Redis/CouchDB的用户他们不是我的想法,但Trove似乎符合法案。会对其他类似项目感兴趣。 – user1172468