java中List集合的实现类ArrayList、Vector、LinkedList的使用和区别
先说一下集合与数组的异同,
共同点:都是用来储存数据的对象容器。
不同点:
数组:数组的长度是固定的,每个元素可以是任何类型。
集合:集合的长度可以改变,可以增加元素和删除元素。每个元素都是引用数据类型(基本数据类型可以转换为包装类对象)。
集合常用分类
集合主要分两类
Collection集合:
List集合,Set集合;
Map集合;
集合的API所在包在:java.util.*;
Collection集合
Collection接口不能实例化。
主要有以下常用抽象方法:
int size()
返回此集合中的元素数。
boolean add(E e)
确保此集合包含指定的元素(可选操作)。
boolean remove(Object o)
从该集合中删除指定元素的单个实例(如果存在)(可选操作)。
void clear()
从此集合中删除所有元素(可选操作)。
boolean isEmpty()
如果此集合不包含元素,则返回 true 。
boolean contains(Object o)
如果此集合包含指定的元素,则返回 true 。
Iterator<E>
iterator()
返回此集合中的元素的迭代器。
List集合
List接口继承了Collection接口,不能实例化。
特点:有序的集合,可以存储重复的元素,继承了Collection的抽象方法。
扩展的方法有:
E get(int index)
返回此列表中指定位置的元素。
E set(int index, E element)
用指定的元素(可选操作)替换此列表中指定位置的元素。
E remove(int index)
删除该列表中指定位置的元素(可选操作)。
int indexOf(Object o)
返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
int lastIndexOf(Object o)
返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。
List<E> subList(int fromIndex, int toIndex)
返回此列表中指定的 fromIndex (含)和 toIndex之间的视图。
我们一般只用它的实现类ArrayList、Vector、LinkedList;
ArrayList、Vector、LinkedList
他们三个的区别:
ArrayList和Vector,采用的是数组结构存储数据,查询和修改速度快,删除和插入比较慢。
LinkedList,采用的是链表结构存储数据,查询和修改速度慢,删除和插入比较快。
ArrayList是线程不安全的,速度快。
Vector是线程安全的,速度慢。
他们三个我们使用最多的就是ArrayList。我以ArrayList为例演示一下它的一些常用操作:
//创建一个ArrayList集合
ArrayList list=new ArrayList();
//判断list是否是一个集合并打印
System.out.println("是否是空集合:"+list.isEmpty());
//获取list集合的长度
//下面为了方便演示我打印下来
System.out.println("添加元素前集合的长度:"+list.size());
//添加元素
list.add(1);
list.add(2);
list.add(3);
list.add(6);
list.add(5);
list.add(4);
System.out.println("添加元素后集合的长度:"+list.size());
System.out.println("是否是空集合:"+list.isEmpty());
//删除元素
//根据下标删除
list.remove(2);
System.out.println("删除元素2后集合的长度:"+list.size());
//是否包含指定元素
//4在集合中,9不在集合中
boolean b1=list.contains(4);
boolean b2=list.contains(9);
System.out.println("4包含在集合中:"+b1);
System.out.println("9包含在集合中:"+b2);
//获取指定元素
Object o1=list.get(1);
System.out.println("下标为1的元素:"+o1);
//修改指定元素
list.set(1,8);
Object o2=list.get(1);
System.out.println("下标为1的元素修改后:"+o2);
//获取指定元素第一次出现的下标
int index1=list.indexOf(4);
System.out.println("元素4第一次出现的下标:"+index1);
//获取指定元素最后一次出现的下标
int index2=list.lastIndexOf(5);
System.out.println("元素5最后一次出现的下标:"+index2);
//截取子集合
List list1=list.subList(1,3);
System.out.println("子集合的长度:"+list1.size());
//清空集合
list.clear();
System.out.println(list.size());
List集合的遍历,下次整理出来再补充。