2015-08-28 70 views
0

最近我一直在致力於Collections,並且我有一個潛在巨大的後端處理返回的項目列表。 比如我List中有100個項目,我遍歷這個列表中最for loop下面提到 -在集合上處理大型項目

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中打印Map的大小(我在Eclipse IDE上工作),我可以看到線程執行停止在ModelContext Thread,並且控制檯在每次執行內部循環(1000)後緩慢地打印映射的大小項目),這在時間效率方面非常糟糕。有沒有辦法將這些操作分解爲更小的模塊並提高時間效率?

有人可以請建議/建議一個更好的方法來處理這些龐大的項目列表(考慮到後端返回的項目可能會隨着時間的推移而增長)?我的新方法應該以合理的幅度縮短執行時間,否則我的應用程序的整體性能將會很糟糕。

有沒有更清潔和有效的方式來處理這些日益罕見的情況?

謝謝大家。

+7

對於任何一臺電腦來說'100 * 1000'都無法接近大數目。對象是什麼樣的?你在做什麼樣的處理? – Keppil

+0

我只是以爲它可能會導致一個OutOfMemoryError,這是否有一個更清潔和有效的方式來處理巨大的列表項?就像我的例子一樣..你能否給我提供一個以更簡單,更省時的方式處理巨大列表項的例子? – user3652212

+0

我也將編輯我的問題,以刪除我的初始文章中的OutOfMemoryError部分。 – user3652212

回答

0

我不確定你在這裏要做什麼,但是我在使用迭代器時遇到了類似的問題 - 大幅減速。你有沒有試過只是通過列表?

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

對我來說,沒有創建所有這些新的迭代器幫了很多。

+1

增強的for循環(又名'foreach')僅僅是'for-Iterator'循環的語法糖。 – Clashsoft