列表与列表迭代器

我有一个清单:

List myList = new ArrayList(); 

要从此列表中获取,有两种方法:

1。

 for(Object obj : myList ) { // some code } 

2。

 Iterator objIt = myList.iterator(); while(obj.hasNext()) { Object obj = (Object)objIt.next(); // some code } 

我的问题是哪一个内存有效并且快速迭代?

他们做同样的事情 – 增强的for循环只是简写版本的语法糖(对于iterables;对于数组,它略有不同)。 除非你明确需要迭代器(例如调用remove() ),否则我会使用第一个版本。

有关编译器执行的确切转换的更多详细信息,请参阅Java语言规范的第14.14.2节 。

使用Iterator可以从定义class外部更安全地访问List ,因为您不会意外地覆盖整个List 。 您一次只能访问一个元素:最重要的元素。

因此我们使用的指南是仅使用定义类中的for each方法,并且每当需要从外部访问List时,必须使用迭代器。 这也强制了保持如何修改包含它的class中的成员的逻辑的概念。 外部需要的所有复杂操作必须在class内的public方法中实现。

迭代器:它在需要时为您提供结果,并且不会在内存中获得所有结果

第一个是你在JDK 1.5+中引入的“增强for循环”

迭代列表是更方便的方法。 此外,如果您使用它,则无需进行显式铸件。

从表现的角度来看,我认为两者之间并没有太大的区别。

增强的for循环仅在其中使用迭代器。 所以两者都是一样的。

第一个更清楚,但如果你想在访问列表时删除元素,你唯一的选择是迭代器。