-
List集合存储元素特点:有序可重复
有序:List集合中的元素有下标
从0开始,以1递增
其为collection的子接口,所以有自己独有的方法
-
常用方法:
void add(int index, E element)
E get(int index)
int indexOf(Object o) 用的较少
E remove(int index)
E set(int index ,E element)
(泛型)
ArrayList是初始化容量是10,在添加第一个元素的时候变为10,无参构造的时候是0
底层是Object类型的数组
如果需要扩容,底层为按位运算(二进制向右移动一位),增长到原本容量的1.5倍
尽量少的扩容,数组扩容效率较低
缺点:随机增删效率较低,不能存储大数据量,因为很难找到一块连续的大的内存空间
优点:检索效率高,空间大小占用相同,内存地址连续,知道下标,所以可通过数学公式计算
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class CollectionList01 {
public static void main(String[] args) {
//创建List对象
List mylist = new ArrayList();
//添加元素
mylist.add("a");
mylist.add("b");
mylist.add("c");
mylist.add("d");
mylist.add("c");
mylist.add(1,"hello");//在指定下标添加元素,后面的元素往后位移,效率较低
//迭代器
Iterator it = mylist.iterator();
while(it.hasNext()){
Object elt = it.next();
System.out.println(elt);
}
//get方法,获取List集合指定下标的元素
Object Obj = mylist.get(0);
System.out.println(Obj);
//List集合特有的下标遍历方式
for(int i=0;i<mylist.size();i++){
Object obj = mylist.get(i);
System.out.println(obj);
}
//获取对象第一次出现的索引
System.out.println(mylist.indexOf("hello"));
//获取指定对象最后输出的索引
System.out.println(mylist.lastIndexOf("c"));
//删除指定下标位置的元素
mylist.remove(0);
for(int i=0;i<mylist.size();i++){
Object obj = mylist.get(i);
System.out.println(obj);
}
//修改指定位置元素
mylist.set(0,"hhhhhh");
for(int i=0;i<mylist.size();i++){
Object obj = mylist.get(i);
System.out.println(obj);
}
}
}
运行结果为
a
hello
b
c
d
c
a
a
hello
b
c
d
c
1
5
hello
b
c
d
c
hhhhhh
b
c
d
c
此外
public class ArrrayList02 {
public static void main(String[] args) {
Collection coll = new HashSet();
coll.add(100);
coll.add(200);
coll.add(900);
coll.add(50);
//通过此方法,可以将HashSet集合转换成List集合
List list01 = new ArrayList(coll);
for(int i =0;i<list01.size();i++){
System.out.println(list01.get(i));
}
}
}