1 package com.smbea.demo;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6
7 /**
8 * 1、继承自接口 List、RandomAccess、Cloneable、Serializable;
9 * 2、实现自类 AbstractList;
10 * 3、元素有顺序;
11 * 4、增删操作由于要移动元素,故此增删比较慢;
12 * 5、查询操作由于采用的是索引,故此查询比较快;
13 * 6、非线程安全的-轻量级;
14 * 7、由于实现了接口 RandomAccess,故此可以随机访问其中的元素;
15 * 8、由于实现了接口 Cloneable,故可以复制 ArrayList;
16 * 9、由于实现了接口 Serializable,故可以被序列化
17 * @author hapday
18 * @date 2016年7月9日 下午9:25:23
19 *
20 */
21 public class ArrayListDemo {
22
23 public static void main(String[] args) {
24 elementRepeatableTest();
25
26 elementSequentialTest();
27 }
28
29 /**
30 * 验证【元素可重复】
31 */
32 public static void elementRepeatableTest() {
33 int num1 [] = new int[]{7,8,9};
34 int num2 [] = num1;
35
36 List<Object> list = new ArrayList<Object> ();
37 list.add(1);
38 list.add(2);
39 list.add(3);
40 list.add(3);
41 list.add("string");
42 list.add(num1);
43 list.add(num2);
44 list.add("中文");
45 list.add("中文可重复");
46 list.add("中文可重复");
47
48 System.out.println("*** 元素可重复(迭代器) ***");
49 Iterator<Object> iterator = list.iterator();
50 while(iterator.hasNext()){
51 System.out.print(iterator.next() + " - ");
52 }
53
54 System.out.println("\n*** 元素可重复(forEach) ***");
55 for(Object object : list){
56 System.out.print(object + " - ");
57 }
58
59 System.out.println("\n*** 元素可重复(toString()) ***");
60 System.out.print(list);
61 }
62
63 /**
64 * 【元素有顺序】
65 */
66 public static void elementSequentialTest() {
67 List<Integer> list = new ArrayList<Integer> ();
68 for(int index = 1; index <= 100000; index++){
69 list.add(index); // 加入 10 万的元素
70 }
71
72 boolean exists = true; // 是否存在:true-存在;false-不存在
73 int current = 0; // 当前元素
74 int previous = 0; // 上一个元素
75 Iterator<Integer> iterator = list.iterator();
76 while(iterator.hasNext()){
77 current = iterator.next();
78 if(current < previous){
79 exists = false;
80 }
81
82 previous = current;
83 }
84
85 System.out.println("\n*** 元素有顺序 ***");
86 System.out.print("是否有顺序:" + exists);
87 }
88
89 }
1、继承自接口 List、RandomAccess、Cloneable、Serializable;
2、实现自类 AbstractList;
3、元素有顺序;
4、增删操作由于要移动元素,故此增删比较慢;
5、查询操作由于采用的是索引,故此查询比较快;
6、非线程安全的-轻量级;
7、由于实现了接口 RandomAccess,故此可以随机访问其中的元素;
8、由于实现了接口 Cloneable,故可以复制 ArrayList;
9、由于实现了接口 Serializable,故可以被序列化