ArrayList类:
API介绍:
解析:
- ArrayList类是List接口直接实现类,其底层由可变数组构成。支持null,但线程不安全。如果需要线程安全集合请Vector。
- 构造方法:
import java.util.ArrayList;
import java.util.Collection;
public class Text2 {
public static void main(String[] args) {
//ArrayList 设置集合容器大小为10
ArrayList list1 = new ArrayList();
//ArrayList(int) 设置集合容器大小
ArrayList list2 = new ArrayList(100);
Collection col = new ArrayList();
col.add(1);
col.add(10);
//ArrayList(Collection) 初始化集合元素
ArrayList list3 = new ArrayList(col);
System.out.println(list3);//[1, 10]
}
}
- 底层实现:长度可变数组
- 常用功能方法(与List接口一致)
import java.util.ArrayList;
public class Text3 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(1);
list.add("abc");
list.add(1,"wahaha");
System.out.println(list);//[1, wahaha, abc]
list.remove("abc");
list.remove(0);//下标
System.out.println(list);//[wahaha]
list.set(0,"zzz");//修改
System.out.println(list.get(0));//获取 zzz
}
}
LinkedLis类:
API介绍:
解析:
- LinkedList类是List接口的直接实现类,底层由双层链表组成,允许null值,但线程不安全。
1,构造方法:
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
public class Text4 {
public static void main(String[] args) {
//LinkedList() 空列表
LinkedList list = new LinkedList();
//LinkedList(Collection) 用于初始化LinkedList对象元素
Collection col = new ArrayList();
col.add("1");
LinkedList list2 = new LinkedList(col);
System.out.println(list2);//[1]
}
}
- 底层实现:
- 验证 ArrayList 添加/删除效率低,LinkedList效率高
import java.util.ArrayList;
import java.util.LinkedList;
public class Text5 {
public static void main(String[] args) {
//分析:20000次在集合中添加元素对象1
long start = System.currentTimeMillis();
//ArrayList list = new ArrayList();
LinkedList list = new LinkedList();
for (int i = 0; i <20000 ; i++) {
list.add(0,1);//在集合头部添加元素
}
long end = System.currentTimeMillis();
System.out.println(end-start);//43 11
}
}
结论:
- . LinkedList 添加/删除元素效率高,ArrayList 添加/删除元素效率低。
4,验证 ArrayList 查询效率高,LinkedList效率低
import java.util.ArrayList;
import java.util.LinkedList;
public class Text6 {
public static void main(String[] args) {
//分析:通过获取20000次随机下标进行查询,分析效率。
//LinkedList list = new LinkedList();
ArrayList list = new ArrayList();
for (int i = 0; i <20000 ; i++) {
list.add(1);//先给集合添加20000个元素
}
long start = System.currentTimeMillis();
for (int i = 0; i <20000 ; i++) {
int index = (int)(Math.random()*20000);//随机下标
list.get(index);
}
long end = System.currentTimeMillis();//179 13
System.out.println(end-start);
}
}
结论:
- LinkedList 查询元素效率低,ArrayList 查询元素效率高
5,常用特有功能方法:
- 栈方法:
- 栈是一种数据结构,特点:先进后出
import java.util.LinkedList;
public class Text7 {
public static void main(String[] args) {
//模仿栈结构存取对象
LinkedList list = new LinkedList();
//.push(Object) 将新对象添加第一个对象前方
list.push(1);
list.push(2.3);
list.push(true);
System.out.println(list);//[true, 2.3, 1] 先进的放栈底
//Object.pop() 删除第一个(栈顶)对象并返回
Object obj = list.pop();
System.out.println(list);//[2.3, 1]
}
}
- 队列方法:
- 队列是一种数据结构,特点:先进先出
import java.util.LinkedList;
public class Text7 {
public static void main(String[] args) {
//模仿队列结构存取对象
LinkedList list = new LinkedList();
//offer(Object) 将新对象添加到结尾
list.offer(1);
list.offer(2.3);
list.offer(true);
System.out.println(list);//[1, 2.3, true]
//Object.poll() 删除第一个对象
Object obj = list.poll();
System.out.println(list);//[2.3, true]
}
}
Vector类(了解,版本太旧):
API介绍:
解析:
- Vector类是List接口的直接实现类,底层由长度可变数组组成,但线程安全。是一个又老又旧且效率低的集合对象,开发中很少使用
。
1,构造方法:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Vector;
public class Text8 {
public static void main(String[] args) {
//Vector() 空集合,默认大小:10
Vector vector = new Vector();
//Vector(Collection) 初始化集合
Collection col = new ArrayList();
col.add(1);
Vector vector1 = new Vector(col);
System.out.println(vector1);//[1]
//Vector(int) 指定初始容量大小
Vector vector2 = new Vector(100);
//Vector(int, int) 指定初始容量大小 和 容量增量值
Vector vector3 = new Vector(100,200);
}
}
2,常用功能方法(与List接口一致)
略