您的位置:首页 > 编程语言 > Java开发

内功心法 -- java.util.ArrayList<E> (1)

2017-02-07 21:03 441 查看
写在前面的话:读书破万卷,编码如有神
--------------------------------------------------------------------
下文主要对java.util.ArrayList<E>进行整体性介绍,主要内容包括:

1、 ArrayList概述

2、 ArrayList中的属性、构造方法、常用方法介绍

3、 ArrayList遍历

参考内容:

1、JDK源码(1.7)
--------------------------------------------------------------------

1. ArrayList概述

java.util.ArrayList<E>是一个什么玩意,它有什么功能,我们拿ArrayList能够干嘛?

简单点说:java.util.ArrayList<E>是一个列表类,它是用来存放其他Java对象,内部是通过数组来实现的。

先看下面的图(简略图):

1 import java.util.ArrayList;
2 import java.util.Iterator;
3 import java.util.List;
4
5
6 public class ArrayListAccessDemo {
7     /**
8      * 通过索引值去遍历(随机访问)
9      */
10     public static void accessByIndex(List<Integer> list){
11         long beginTime = System.currentTimeMillis();
12         for(int i = 0;i < list.size();i++){
13             list.get(i);
14         }
15         long endTime = System.currentTimeMillis();
16         long totalTime = endTime - beginTime;
17         System.out.println("通过索引值去遍历(随机访问) 花费的时间:" + totalTime+" 毫秒");
18
19     }
20
21     /**
22      * 通过增强的for循环去遍历
23      */
24     public static void accessByFor(List<Integer> list){
25         long beginTime = System.currentTimeMillis();
26         for(Integer i : list){
27             list.get(i);
28         }
29         long endTime = System.currentTimeMillis();
30         long totalTime = endTime - beginTime;
31         System.out.println("通过增强的for循环去遍历  花费的时间:" + totalTime+" 毫秒");
32
33     }
34
35     /**
36      * 通过Iterator迭代器去遍历
37      */
38     public static void accessByIterator(List<Integer> list){
39         long beginTime = System.currentTimeMillis();
40         Iterator<Integer> it = list.iterator();
41         while(it.hasNext()){
42             it.next();
43         }
44         long endTime = System.currentTimeMillis();
45         long totalTime = endTime - beginTime;
46         System.out.println("通过Iterator迭代器去遍历  花费的时间:" + totalTime+" 毫秒");
47
48     }
49
50     public static void main(String[] args) {
51         //创建一个ArrayList实例
52         List<Integer> list = new ArrayList<Integer>();
53         //往ArrayList实例中添加数据
54         for(int i = 0;i < 10000000;i++){
55             list.add(i);
56         }
57
58         accessByIndex(list);
59         accessByFor(list);
60         accessByIterator(list);
61     }
62 }
63
64 运行结果:
65 ArrayList中有100W条数据时:
66 通过索引值去遍历(随机访问) 花费的时间:2 毫秒
67 通过增强的for循环去遍历  花费的时间:9 毫秒
68 通过Iterator迭代器去遍历  花费的时间:4 毫秒
69
70 ArrayList中有500W条数据时:
71 通过索引值去遍历(随机访问) 花费的时间:4 毫秒
72 通过增强的for循环去遍历  花费的时间:20 毫秒
73 通过Iterator迭代器去遍历  花费的时间:9 毫秒
74
75 ArrayList中有1000W条数据时:
76 通过索引值去遍历(随机访问) 花费的时间:3 毫秒
77 通过增强的for循环去遍历  花费的时间:32 毫秒
78 通过Iterator迭代器去遍历  花费的时间:13 毫秒
79
80 ArrayList中有5000W条数据时:
81 通过索引值去遍历(随机访问) 花费的时间:3 毫秒
82 通过增强的for循环去遍历  花费的时间:118 毫秒
83 通过Iterator迭代器去遍历  花费的时间:55 毫秒


View Code
----------------------------------------------------------------------------------------

java.util.ArrayList系列文章

java.util.ArrayList<E>(1)  java.util.ArrayList<E>(2)  java.util.ArrayList<E>(3)

java.util.ArrayList<E>(4)  java.util.ArrayList<E>(5)  java.util.ArrayList<E>(6)

相关知识

java.util.Collection<E>   java.util.AbstractCollection<E>   java.util.List<E>

java.util.AbstractList<E>   java.util.Iterator<E>   java.util.ListIterator<E>

Java中的标记接口   迭代器模式   Java中的深拷贝和浅拷贝 java.util.Arrays
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: