访问arraylist哪种方式更好

时间:2014-04-22 12:01:07

标签: java arrays arraylist

我有4种访问arraylist的方法。

1)使用Java5 foreach循环进行循环。 2)使用for循环和size()方法循环ArrayList。 3)使用Iterator迭代ArrayList。 4)使用Java中的ListIterator遍历ArrayList。

我的问题是......都一样吗?一切都好吗?有何不同? (特别是Iterator我问过它)

3 个答案:

答案 0 :(得分:2)

1)如果您不需要跟踪项目的索引/位置,则不会在迭代中间删除项目。此策略消除了显式提取要处理的下一个项目的负担。

2)当您需要跟踪您正在处理的项目的索引/位置时,这是首选。您仍然可以修改列表,但必须自己获取要处理的项目。

3)如果您希望在迭代时从列表中删除项目,则更为可取。与2)

相比,您不需要管理自己的索引/位置

4)如果您需要向前和向后遍历列表,请在迭代时替换项目等

他们每个人都有自己的用例。

答案 1 :(得分:1)

在我看来取决于你的java版本!

如果您使用的是Java 8,我建议使用流。否则,它还取决于您需要对数据执行的操作:

for (Object o : yourArrayList) {...}

这比使用诸如for (int i = 0; i < yourList.size(); i++) {...}之类的东西进行迭代更有效,因为你不必遍历整个列表来获取每个对象(不确定列表是否进行任何内部缓存) 。如果您需要删除对象,请使用Iterator或Java 8的流:

Iterator<Object> itr = yourArrayList.iterator();
while(itr.hasNext()) {
    Object o = itr.next();
    //conditional around o, assume it's true for this example and remove 'o'
    itr.remove();
}

我建议使用vanilla for循环的唯一时间是跟踪项目的位置。

答案 2 :(得分:0)

取决于使用

<强>实施例

List<String> x=new ArrayList();

遍历使用for-each和迭代器是非常相似的,因为for-each循环实现了一个隐式迭代器。

for(String a:x){

} 

但是如果你想根据它的位置访问元素,那么使用normal for loop

for(int i=0;i<x.size();i++){
    x.get(i);//access each elements according to pos.
}