列表与列表迭代器
我有一个清单:
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循环仅在其中使用迭代器。 所以两者都是一样的。
第一个更清楚,但如果你想在访问列表时删除元素,你唯一的选择是迭代器。