加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 当我遍历List时,哪种方法最有效?

发布时间:2020-12-15 02:05:17 所属栏目:Java 来源:网络整理
导读:ListT list = new ArrayListT(); 1方法: for(int i = list.length - 1; i = 0; i--) { System.out.println(list.get(i));} 2方法: for(T t : list) { System.out.println(t);} 3方法: IteratorT it = list.iterator(); while(it.hasNext()) { System.out.
List<T> list = new ArrayList<T>();

1方法:

for(int i = list.length - 1; i >= 0; i--) {
  System.out.println(list.get(i));
}

2方法:

for(T t : list) {
  System.out.println(t);
}

3方法:

Iterator<T> it = list.iterator();     
while(it.hasNext()) {
  System.out.println(it.next());
}

解决方法

效率不太可能显着 – 当然,System.out.println更可能是您特定示例中的瓶颈.

第二种方法(增强的循环)是最可读的.请注意,这三种方法不会做同样的事情 – 第一种方法将从结束而不是从开始迭代.获得正确的行为几乎总是胜过少量,快一点.您的代码越可读,您就越有可能做到正确.

寻求可读性,衡量应用程序的性能,如果它成为一个问题,微观优化瓶颈(继续测量每一步).

编辑:我的答案基于问题的第一行,显示了一个ArrayList< T>正在使用.

如果您想要任何List< T>的答案那时根本就没有准确的答案.列表与LT; T>不提供任何有关复杂性的保证.它并没有说明你应该达到多快,也不会说你期望迭代器的速度有多快.您可能正在使用具有良好随机访问权限的实现,但这是一个非常缓慢的迭代器.这不太可能,但它仍然是一个有效的List< T>.

简而言之:如果你担心效率,你需要知道你正在使用什么样的列表.通常,迭代它可能是合理有效的,并且随机访问可能有效也可能无效. (它可能比迭代更有效,但它不太可能显着提高效率.)在实践中,我的经验是,在大多数应用程序中,你实际上有足够的知识来做出合理的判断……但我通常仍会编写代码可读性首先.

正如其他人所指出的那样,如果你确实想使用随机访问来获取元素,那么确保你的列表也实现RandomAccess接口是值得的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读