Java高级Day19-List、ArrayList
64.List接口和常用方法
List接口基本介绍
-
List集合类中元素有序(即添加顺序和取出顺序一致)、且可以重复
-
List集合中的每个元素都有其对应的顺序索引,即支持索引
-
List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素
List常用方法:
//1.void add(int index,Object ele):在index位置插入ele元素,不写默认添加在最后 list.add("WOW"); list.add(1,"WOW") //2.boolean addAll(int index,Collection eles):从index位置开始将eles中的所有元素添加进来 list.addAll(1,list2); //3.Object get(int index):获取指定index位置的元素 list.get(1); //4.int indexOf(Object obj):返回obj在集合中首次出现的位置 System.out.printl(list.indexOf("tom")); //5.int lastIndexOf(Object obj):返回obj在当前集合中最后一次出现的位置 System.out.printl(list.indexOf("tom")); //6.Obejct remove(int index):一处指定index位置的元素,并返回此元素 list.remove(0); //7.Object set(int index,Object ele):设置指定index位置的元素为ele,相当于是替换 list.set(1,"Jack") //8.List subList(int fromIndex,int toIndex):返回从fromIndex到toIndex位置的子集合 List returnlist = list.subList(0,2);//范围:前闭后开
65.List的三种遍历方式
//方式1:使用iterator Iterator iterator = col.iterator();while(iterator.hasNext()){Object obj = iterator.next();} //方式2:使用增强for for(Object objc:col){} //方式3:使用普通for for(int 1 = 0;i < list.size();i++){Object object = list.get(i);System.out.println(objcet); }
66.ArrayList
注意事项:
-
permits all elements,including null,ArrayList可以加入null,并且多个
-
ArrayList是由数组来实现数据存储的
-
ArrayList基本等同于Vector,除了ArrayList是线程不安全(执行效率高)
ArrayList扩容机制:
-
ArrayList中维护了一个Objcet类型的数组elementData.transient Object[] elementData;
transient:表示属性不会被序列化
-
当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第1次添加,则扩容elementData为10,如需要再次扩容,则扩容elementData为1.5倍
-
如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如果需要扩容,则直接扩容elementData为1.5倍