List子接口对应三个实现类:主要使用的是ArrayList,线程不安全效率高,LinkedList底层使用的是双向链表,对于频繁插入数据的可以优先使用
常用的方法:增 删 改 查 插 长度 遍历 与Collection接口的方法差不多
1 /** 2 * Collection子接口之List接口: 3 * List子接口有3个实现类:ArrayList,LinkedList,Vector 4 * 1:ArrayList实现类: 5 * 三者的异同: 6 * 相同:三个类都是实现了List接口,存储数据的特点相同,存储有序的可重复的数据 7 * 不同:ArrayList作为List接口的主要实现类,其他两个比较少使用 8 * ArrayList是线程不安全的,效率高,底层使用Object[]存储 9 * LinkedList底层使用双向链表存储,对于频繁的插入删除操作优先使用LinkedList 10 * ************************ 11 * ArrayList源码分析: 12 * 常用方法: 13 * 增:add()/addAll(int ) 14 * 删:remove() 15 * 改:set() 16 * 查:get() 17 * 插:add(int index,Object o) 18 * 长度:size() 19 * 遍历:1:迭代器Iterator 2:增强for循环 3:普通循环 20 * 21 */ 22 public class ListTest { 23 @Test 24 public void test() { 25 ArrayList arrayList = new ArrayList();//创建对象实际上是创建了初始长度为10的数组Object[]elementDate 26 //如果长度不够,扩容1.5倍, 27 ArrayList arrayList2 = new ArrayList(20);//开发中建议使用带参数构造器自己设置长度 28 arrayList.add(123); 29 arrayList.add("hpp"); 30 System.out.println(arrayList); 31 LinkedList linkedList=new LinkedList(); 32 linkedList.add("hpp"); 33 linkedList.add(123); 34 linkedList.add(LocalDateTime.now()); 35 linkedList.add(new ArrayList()); 36 linkedList.add(2,132612);//add插入操作 37 linkedList.addAll(2,arrayList); 38 linkedList.add(111); 39 linkedList.remove(2);//remove删除操作 40 System.out.println(linkedList.get(2)); 41 System.out.println(linkedList.indexOf(111)); 42 linkedList.remove("hpp"); 43 linkedList.set(0,666);//设置值 44 System.out.println(linkedList); 45 System.out.println(linkedList.size());//长度size() 46 //迭代器进行遍历 47 Iterator iterator=linkedList.iterator(); 48 while (iterator.hasNext()){ 49 System.out.println(iterator.next()); 50 } 51 //增强for循环进行遍历 52 for (Object obj:linkedList){ 53 System.out.println(obj); 54 } 55 //普通for循环遍历 56 for (int i = 0; i < linkedList.size(); i++) { 57 System.out.println(linkedList.get(i)); 58 } 59 } 60 }