我是靠谱客的博主 兴奋芝麻,最近开发中收集的这篇文章主要介绍java for itrator_Java中传统for循环与Iterator / foreach的性能,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

假设这是您的意思:

// traditional for loop

for (int i = 0; i < collection.size(); i++) {

T obj = collection.get(i);

// snip

}

// using iterator

Iterator iter = collection.iterator();

while (iter.hasNext()) {

T obj = iter.next();

// snip

}

// using iterator internally (confirm it yourself using javap -c)

for (T obj : collection) {

// snip

}

对于没有随机访问权限的集合(例如TreeSet,HashMap,LinkedList),Iterator的速度更快。对于数组和ArrayList,性能差异应该可以忽略不计。

编辑:我相信微基准测试是邪恶的根源,就像早期的优化一样。但是话又说回来,我觉得对这样琐碎的事情的含义有感觉是一件好事。因此,我进行了一个小测试:

分别遍历LinkedList和ArrayList

带有100,000个“随机”字符串

总结它们的长度(只是为了避免编译器优化整个循环)

使用所有3种循环样式(迭代器,每种,用于带计数器)

除LinkedList“带有计数器”外,其他所有结果均相似。所有其他五个在不到20毫秒的时间内遍历整个列表。使用list.get(i)上一个LinkedList 100,000次时间超过2分钟(!)来完成(慢6万倍)。哇!:)因此,最好使用迭代器(显式或隐式地为每个迭代器使用),尤其是如果您不知道要处理的列表的类型和大小时。

最后

以上就是兴奋芝麻为你收集整理的java for itrator_Java中传统for循环与Iterator / foreach的性能的全部内容,希望文章能够帮你解决java for itrator_Java中传统for循环与Iterator / foreach的性能所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部