List遍历效率
来源:互联网 发布:sql表格联合主键 编辑:程序博客网 时间:2024/05/22 12:05
1. 常用遍历 List 之方法
遍历 List 方法有三:
a) for (Iterator iterator = ls.iterator(); iterator.hasNext();)
b) for (int i = 0; i < ls.size(); i++)
c) for (Object object : ls) (java5+)
常用 List 实现有二:
a) java.util.ArrayList
b) java.util.LinkedList
效率如何?
2. 遍历方法之小误差验证
输出:
class java.util.ArrayList
iterator-nanotime :7199195
arraylike-nanotime:1920143
foreach-nanotime :3775320
class java.util.LinkedList
iterator-nanotime :5430188
arraylike-nanotime:9148595046
foreach-nanotime :1677620
iterator-nanotime :7199195
arraylike-nanotime:1920143
foreach-nanotime :3775320
class java.util.LinkedList
iterator-nanotime :5430188
arraylike-nanotime:9148595046
foreach-nanotime :1677620
方法:
- private static void nanoLoop(List ls){
- System.out.println(ls.getClass());
- { // iterator
- long b = System.nanoTime();
- for (Iterator iterator = ls.iterator(); iterator.hasNext();) {
- Object object = (Object) iterator.next();
- }
- System.out.println("iterator-nanotime :"+(System.nanoTime()-b));
- }
- { // array-like
- long b = System.nanoTime();
- for (int i = 0; i < ls.size(); i++) {
- Object object = (Object) ls.get(i);
- }
- System.out.println("arraylike-nanotime:"+(System.nanoTime()-b));
- }
- { // foreach
- long b = System.nanoTime();
- for (Object object : ls) {
- Object s = (Object) object;
- }
- System.out.println("foreach-nanotime :"+(System.nanoTime()-b));
- }
- }
- private static List initList(List ls,int count){
- for (int i = 0; i < count; i++) {
- ls.add("aaaa");
- }
- return ls;
- }
- public static void main(String[] args) {
- nanoLoop(initList(new ArrayList(),10*10000));
- nanoLoop(initList(new LinkedList(),10*10000));
- }
3. 鲁莽结论
* 黑盒情况下:foreach > iterator > arraylike
* ArrayList :arraylike>foreach >iterator
* LinkedList:foreach >iterator >>>arraylike
参考:http://trydofor.iteye.com/blog/800247
- List遍历效率
- list遍历方法及效率
- list遍历方式效率分析
- Java List遍历方法 及其效率对比
- Java List遍历方法 及其效率对比
- Java List遍历方法 及其效率对比
- List集合两种遍历效率问题
- java List遍历方法及效率对比
- Java List遍历方法 及其效率对比
- Java遍历List四种方法的效率对比
- List三种遍历方式及效率问题
- List遍历
- list遍历
- list遍历
- List遍历
- java map遍历效率
- HashMap遍历效率测试
- HashMap遍历效率比较
- Spring中的ref标签的使用
- 使用 Antlr 开发领域语言 - 开发一个完整的应用
- fatal error C1900: Il mismatch between 'P1' version '20080116' and 'P2' version '20070207'
- UITableView 滚动到指定行 section
- RabbitMQ-C客户端使用说明
- List遍历效率
- 文件系统的搭建,在此留个笔记,以免自己忘了
- C#中获取文本框中光标所在位置
- 帝国6.6 调用栏目地址的一点体会 sys_ReturnBqClassname($cr0,9);
- 高通平台android开发总结
- S3C2440上LCD驱动(FrameBuffer)实例开发讲解(三)
- Printf参数说明
- poj 2486
- IOS 如何在使用Cocos2D中实现A星(A*)寻路算法