目录
1、List集合
1.1、什么是List集合?
java.util.List
接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List
接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。
1.1、List集合的特点
1、它是一个元素存取有序的集合。
2、它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。
3、集合中可以有重复的元素。
1.2、List集合常用方法
List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,而且还增加了一些根据元素索引来操作集合的特有方法。
方法名 | 说明 |
---|---|
public void add(int index, E element) | 将指定的元素,添加到该集合中的指定位置上。 |
public E get(int index) | 返回集合中指定位置的元素。 |
public E remove(int index) | 移除列表中指定位置的元素, 返回的是被移除的元素。 |
public E set(int index, E element) | 用指定元素替换集合中指定位置的元素,返回值的更新前的元素。 |
1.3、代码演示
public class ListDemo {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
//添加元素
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
//删除指定索引元素或者删除指定元素
list.remove("world");
list.remove(0);
System.out.println(list);
//获取集合的元素个数
int size = list.size();
System.out.println(size);
//查看集合中是否包含指定元素
boolean hello = list.contains("hello");
System.out.println(hello);
//list集合获取指定索引的元素
String s = list.get(0);
System.out.println(s);
System.out.println("-------------------");
//list集合遍历
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String next = iterator.next();
System.out.println(next);
}
System.out.println("-------------------");
//普通for遍历
for (int i = 0; i <list.size() ; i++) {
String s1 = list.get(i);
System.out.println(s1);
}
System.out.println("-------------------");
//增强for
//iter
for (String s1 : list) {
System.out.println(s1);
}
}
}
2、ArrayList集合
2.1、ArrayList集合特点
底层数据结构是数组,查询快,增删慢 线程不安全,效率高。
2.1、ArrayList集合常用方法
方法名 | 说明 |
---|---|
public void add(int index, E element) | 将指定的元素,添加到该集合中的指定位置上。 |
public E get(int index) | 返回集合中指定位置的元素。 |
public E remove(int index) | 移除列表中指定位置的元素, 返回的是被移除的元素。 |
public E set(int index, E element) | 用指定元素替换集合中指定位置的元素,返回值的更新前的元素。 |
public boolean add(E e) | 将指定的元素添加到此列表的尾部。 |
2.2、代码演示
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> arrayList=new ArrayList<>();
//添加元素
arrayList.add("hello");
arrayList.add("world");
//在指定索引添加元素替换原有的元素
arrayList.add(0,"rose");
//指定索引,在此索引处进行设置值
arrayList.set(1,"java");
System.out.println(arrayList);
//获取指定索引的元素
String s = arrayList.get(1);
System.out.println(s);
//删除指定索引的元素
String remove = arrayList.remove(1);
System.out.println(remove);
System.out.println(arrayList);
}
}
3、LinkedList集合
3.1、LinkedList的特点
1、底层数据结构是链表,查询慢,增删快
2、线程不安全,效率高
3.2、LinkedList常用方法
方法名 | 说明 |
---|---|
public void addFirst(E e) | 将指定元素插入此列表的开头。 |
public void addLast(E e) | 将指定元素添加到此列表的结尾。 |
public E getFirst() | 返回此列表的第一个元素。 |
public E getLast() | 返回此列表的最后一个元素。 |
public E removeFirst() | 移除并返回此列表的第一个元素。 |
public E removeLast() | 移除并返回此列表的最后一个元素。 |
public E pop() | 从此列表所表示的堆栈处弹出一个元素。 |
public void push(E e) | 将元素推入此列表所表示的堆栈。 |
public boolean isEmpty() | 如果列表不包含元素,则返回true。 |
LinkedList是List的子类,List中的方法LinkedList都是可以使用,我们只需要了解LinkedList的特有方法即可。在开发时,LinkedList集合也可以作为堆栈,队列的结构使用。
3.3、代码演示
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<String> linkedList=new LinkedList<>();
//添加元素
linkedList.add("hello");
linkedList.add("world");
linkedList.add("java");
//添加头部元素
linkedList.addFirst("head");
//添加尾部元素
linkedList.addLast("last");
System.out.println(linkedList);
System.out.println("-------------------");
//获取头部元素
String first = linkedList.getFirst();
System.out.println(first);
//获取尾部元素
String last = linkedList.getLast();
System.out.println(last);
System.out.println("-------------------");
//删除头部元素并返回该元素值
String s = linkedList.removeFirst();
//删除尾部元素并返回该元素值
String s1 = linkedList.removeLast();
System.out.println(s);
System.out.println(s1);
System.out.println(linkedList);
System.out.println("-------------------");
//循环集合 如果不为空就弹出一个元素
while(!linkedList.isEmpty()){
linkedList.pop();
}
System.out.println(linkedList);
}
}
4、Vector集合
4.1、Vector集合特点
1、底层数据结构是数组,查询快,增删慢。
2、线程安全,效率低。
4.2、代码演示
public class VectorDemo {
public static void main(String[] args) {
Vector<String> vector=new Vector<>();
vector.addElement("hello");
vector.addElement("world");
vector.addElement("java");
//集合遍历
for (int i = 0; i <vector.size() ; i++) {
String s = vector.elementAt(i);
System.out.println(s);
}
System.out.println("-------------------");
//vector集合迭代器遍历
Enumeration<String> elements = vector.elements();
while(elements.hasMoreElements()){
String s = elements.nextElement();
System.out.println(s);
}
System.out.println("--------------------");
//增强for遍历
for (String s : vector) {
System.out.println(s);
}
}
}
5、List集合子类特点总结
1、ArrayList:
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
2、LinkedList:
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
3、Vector:
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
4、List集合特点:有序可重复。