【发布时间】:2011-10-02 09:54:27
【问题描述】:
我将数据存储在 HashMap 中,我想通过多个线程同时访问它,以拆分对项目完成的工作。
通常(例如使用列表)我会给每个线程一个索引以开始,并且可以像这样轻松地拆分工作:
for(int i = startIndex; i < startIndex+batchSize && i < list.size(); i++)
{
Item a = list.get(i);
// do stuff with the Item
}
当然这不适用于 HashMap,因为我无法通过索引访问它。
有没有一种简单的方法可以只遍历地图的一部分?对于这种情况,我是否应该使用其他数据结构?
我阅读了有关 SortedMap 的信息,但它有太多我不需要的开销(对项目进行排序)。我有大量数据,性能至关重要。
任何提示将不胜感激。
【问题讨论】:
-
您希望地图如何分区?
-
不确定我是否明白这个问题。 :) 我希望将映射划分为与我拥有的线程数一样多的部分(例如 8 个)。如果可能的话,分区不应该是一项昂贵的操作。
-
atm 我正在处理 100.000 个条目,但它确实是开放式的。该算法也应该适用于更大的尺寸。
标签: java data-structures indexing hashmap iteration