ArrayList 浅析示例
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,故可以被序列化