Java 在集合中处理大型项目

Java 在集合中处理大型项目,java,list,arraylist,collections,swt,Java,List,Arraylist,Collections,Swt,我最近一直在处理集合,我有一个潜在的庞大列表,需要处理,由后端返回。 例如,我的列表中有100个项目,我在最外层的For循环中迭代该列表,如下所述- for (final Iterator i = listItems.iterator(); i.hasNext();) { for (final Iterator it = hugeListItems.iterator(); it.hasNext();) { /* For each of the item in this outermos

我最近一直在处理
集合
,我有一个潜在的庞大列表,需要处理,由后端返回。 例如,我的
列表
中有100个项目,我在最外层的
For循环
中迭代该列表,如下所述-

for (final Iterator i = listItems.iterator(); i.hasNext();) {
  for (final Iterator it = hugeListItems.iterator(); it.hasNext();) {

  /* For each of the item in this outermost for loop I have another
     List of 1000 items to be processed in the inner for loop, 
     so that would potentially lead to huge amount of processing, in my case    
     (100*1000 times) */
  }
}
处理后的所有这些项目都将添加到地图中

处理这些项目需要大量的时间,这会影响我的应用程序的整体性能。我尝试在for循环中打印映射的大小,在Eclipse中(我在eclipseide上工作),我可以看到线程执行在
ModelContext-thread
处停止,控制台在每次执行内部for循环(1000项)后缓慢打印映射的大小,这在时间效率方面非常糟糕。有没有办法把这些操作分解成更小的模块,提高时间效率

是否有人可以建议/建议一种更好的方法来处理这些庞大的项目列表(考虑到后端返回的项目可能会随着时间的推移而增长)?我的新方法应该可以将执行时间减少相当大的幅度,否则我的应用程序的整体性能将非常糟糕

有没有更干净有效的方法来处理这些日益罕见的情况


谢谢大家。

我不知道你们在这里想做什么,但我在使用迭代器时遇到了类似的问题—严重减速。你有没有试着把清单通读一遍

for ( ListItem top : listItems ) {
    for ( ListItem sub : top ) {
       // Do your fun stuff here for your map
    }
}

对我来说,不创建所有这些新的迭代器帮助很大。

100*1000
对于任何计算机来说都不是一个巨大的数字。这些物体看起来像什么?你在做什么样的处理?我只是认为这可能会导致OutOfMemory错误,暂且不提这一点,有没有更干净有效的方法来处理大量的列表项?就像我的情况一样。。你能给我举一个以更简单、更省时的方式处理大量列表项的例子吗?我还将编辑我的问题,以删除我最初帖子中的OutOfMemoryError部分。任何潜在的改进都将取决于内部循环中发生的情况,以及是否可以避免执行N x M处理步骤和创建N x M映射条目。如果没有,并且集合不断变大,那么您的应用程序就会出现严重问题。请在内部循环中发布代码,以便我们知道它是否可以并行化、优化等。增强的
for
循环(aka
foreach
)只是
for迭代器
循环的语法糖。