一、List接口简介
List接口继承自Collection接口,是单列集合的一个重要分支。
List集合允许出现重复的元素,所有的元素是以一种线性方式进行存储的,元素的存入顺序和取出顺序一致,在程序中可以通过索引访问List集合中的指定元素。
除Collection接口的常用方法外,List集合的常用方法如下:
- void add(int index, Object element) 将元素element插入在List集合的index处
- boolean addAll(int index, Collection c) 将集合c所包含元素插入到List集合的index处
- Object get(int index) 返回集合索引index处的元素
- Object remove(int index) 删除集合索引index处的元素
- Object set(int index, Object element) 将集合索引index处元素替换成element对象,并返回替换后的元素
- int indexOf(Object o) 返回对象o在集合中出现的位置索引
- int lastIndexOf(Object o) 返回对象o在集合中最后一次出现的位置索引
- List subList(int fromIndex, int toIndex) 返回从索引fromIndex(包括)到toIndex(不包括)处的所有元素组成的子集合
二、ArrayList集合
ArrayList是List接口的一个实现类,也是程序中最常见的一种集合,可以看做是一个长度可变的数组。
创建ArrayList集合:ArrayList list = new ArrayList();
向集合中添加元素:list.add(“元素内容”);
获取集合中元素的个数:list.size();
返回指定位置的元素:list.get(index);
举个例子:
import java.util.ArrayList;
public class egforArrayList {
public static void main(String[] args){
ArrayList list = new ArrayList(); //创建ArrayList集合
list.add("张三"); //向集合中添加元素
list.add("李四");
list.add("王五");
list.add("赵六");
//获取集合中的元素的个数
System.out.println("集合的长度为:" + list.size());
//取出并打印指定位置的元素(从0开始计数)
System.out.println("第2个元素是:" + list.get(1));
}
}
弊端:ArrayList集合的底层使用一个数组来保存元素,在增加和删除指定位置的元素时,会创建新的数组,效率比较低,因此不适合做大量的增删操作。
优势:数组的结构允许程序通过索引的方式来访问元素,因此使用ArrayList集合来查找元素很便捷。
三、LinkedList集合
LinkedList集合内部维护了一个双向循环链表,链表中每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,当插入一个新元素时,只需要修改元素之间的这种引用关系即可,删除节点亦是如此。因此LinkedList集合进行元素的增删操作时效率很高。
LinkedList集合定义的一些特有方法:
- void add(int index, E element) 在比集合中指定的位置插入指定的元素
- void addFirst(Object o) 将指定的元素插入此集合的开头
- void addLast(Object o) 将指定元素添加到此集合的结尾
- Object getFirst() 返回此集合的第一个元素
- Object getLast() 返回此集合的最后一个元素
- Object removeFirst()删除并返回此集合的第一个元素
- Object removeLaat() 删除并返回此集合的最后一个元素
举个例子:
import java.util.LinkedList;
public class egforLinkedList {
public static void main(String[] args){
LinkedList link = new LinkedList(); //创建LinkedList集合
link.add("张三");
link.add("李四");
link.add("王五");
link.add("赵六");
//取出并打印该集合中的元素
System.out.println("集合中的初始化元素:" + link);
//向集合中指定位置插入元素
link.add(3,"Student");
//向集合的第一个位置插入元素
link.addFirst("First");
//打印插入后的集合中的所有元素
System.out.println("插入元素后的集合:" + link);
//去除集合中的第一个元素
System.out.println("集合中的第一个元素:" + link.getFirst());
//删除指定位置的元素
link.remove(3);
//删除第一个元素
link.removeFirst();
System.out.println("删除后的集合:" + link);
}
}
四、Vector集合
Vector集合结构与ArrayList类似,底层是数组实现的,是一个线性的动态可扩容数组。初始容量是10,默认以自身的2倍容量扩容,也可以设置容量增量。其中元素的存入和取出顺序是一致的,可重复的,除此之外,Vector是线程安全。
举个例子:
public class egforVector {
public static void main(String[] args){
Vector vector = new Vector(); //创建Vector集合
vector.add(4);
vector.add(2);
vector.add(3);
vector.add(4);
System.out.println("集合中的初始化元素:" + vector);
}
}