List的子类讲解(ArrayList,LinkedList)
前言
在前面的文章里我们讲了怎么去实现链表的一系列的操作(增删改插等),今天我们就来看一下List集合,包括List分支下的子类中如何实现的LinkedList,以及另一个子类ArrayList。
这里附上自定链表的实现:
Java单链表的增,删,改,插 超详解!!!
List集合
List接口介绍
java.util.List
接口继承自 Collection
接口,是单列集合的一个重要分支,习惯性地会将实现了 List 接口
的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。
常用方法有:
public void add(int index, E element)
: 将指定的元素,添加到该集合中的指定位置上。public E get(int index)
:返回集合中指定位置的元素。public E remove(int index)
: 移除列表中指定位置的元素, 返回的是被移除的元素。public E set(int index, E element)
:用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
List的子类
ArrayList
java.util.ArrayList
在源码中分析ArrayList的话其实能够发现这个集合就是利用泛型所写的一个数组,所以该集合符合元素增删慢,查找快的特点。它也是十分常用的集合。
LinkedList
java.util.ArrayList
集合数据存储的结构是链表结构。方便元素添加、删除的集合。并且区别于一般的单向链表,LinkedList是一个双向的链表。如图:
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代码演示
public class LinkedListTest {
public static void main(String[] args) {
LinkedList<String> link = new LinkedList<String>();
//添加元素
link.addFirst("a");
link.addFirst("b");
link.addFirst("c");
System.out.println(link);
// 获取元素
System.out.println(link.getFirst());
System.out.println(link.getLast());
// 删除元素
System.out.println(link.removeFirst());
System.out.println(link.removeLast());
while (!link.isEmpty()) { //判断集合是否为空
System.out.println(link.pop()); //弹出集合中的栈顶元素
}
System.out.println(link);
}
}
尾言
不懂就问,大家一起进步!