list 包括(ArrayList, vector,linkedList),都是存储单个对象的
二、List接口
(1)ArrayList实现类
List list = new ArrayList(); //这样使用还要转换
ArrayList list = new ArrayList(); --android开发中使用子类比父类效率高
* 实现原理:使用动态对象数组,默认初始化一个空数组,
* 在第一次添加元素时,动态扩充为容量10的对象数组
* 数组不适合插入,删除操作
* 如何在集合中确保存储同一种数据类型?使用泛型
* 在集合中,最好使用泛型存储相同类型的数据,避免类型不一致在使用时的类型转换问题
* 为了防止数组动态扩充的次数过多,建议一创建ArrayList时,给定初始容量大小
* 线程不安全,适合在单线程访问时使用,在多线程访问时,
可以通过集合工具类重新构造一个线程安全的ArrayList
(2)Vector实现类 (线程同步)
Vector v = new Vector();
* 实现原理:向量,基于动态对象数组,默认数组大小为10,
* 动态扩充的算法:如果给Vector构造时设置了增量,
* Vector是线程安全的,在多线程并发访问时可以保正数据安全,
* 但在单线程访问时,效率比 ArrayList低。
* 为 避免扩充次数,可以在构造Vector时给定初始容量
(3)LinkedList实现类 (链表集合)
实现原理:基于链表数据结构,适合插入删除操作。性能高,不安全
使用LinkedList 作为链表结构使
LinkedList link = newLinkedList();
link.add("lily");
使用LinkedList作为队列使用(先进先出)
//队列
String s1 =list.peek();//获取队列的头元素
System.out.println("peek="+s1);
String s2 =list.poll();
System.out.println("poll="+s2);//获取并移除头元素
System.out.println(list);
System.out.println("--------------");
使用 LinkedList作为栈使用(先进后出)
list.push("hanmeimei");//压栈
list.push("lilei");
list.push("lucy");
System.out.println(list);
String s3 =list.pop();//出栈
System.out.println(s3);