从屌丝到架构师的飞越(集合篇)-LinkedList
一.介绍
LinkedList不同于前面两种List,它不是基于数组的,所以不受数组性能的限制。
它每一个节点(Node)都包含两方面的内容:
A、节点本身的数据(data);
B、下一个节点的信息(nextNode)。
所以当对LinkedList做添加,删除动作的时候就不用像基于数组的ArrayList一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了,这是LinkedList的优势。
LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
二.知识点介绍
1、LinkdedList链表操作
2、LinkedList常用方法
三.上课对应视频的说明文档
1、LinkdedList链表操作
LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。如下图
LinkedList是List的子类,List中的方法LinkedList都是可以使用,这里就不做详细介绍,我们只需要了解LinkedList的特有方法即可。在开发时,LinkedList集合也可以作为堆栈,队列的结构使用。
方法演示:
LinkedList<String> link = new LinkedList<String>();
//添加元素
link.addFirst("abc1");
link.addFirst("abc2");
link.addFirst("abc3");
//获取元素
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()); //弹出集合中的栈顶元素
}
2、LinkedList常用方法
案例1:
importjava.util.*;
public class LLTest{
public static void main(String args[]){
List l=new LinkedList();
for(inti=0;i<=5;i++){
l.add("a"+i);
}
l.add(3,"a100"); //添加
System.out.println(l);
l.set(6,"a200"); //更改
System.out.println(l);
System.out.println(l.get(2)); //获取值
System.out.println(l.indexOf("a3")); //下标
l.remove(1); //移除
System.out.println(l);
System.out.println(l.indexOf("a3"));
}
}
案例2:
importjava.util.*;
public class LLTest2{
public static void main(String args[]){
List l=new LinkedList();
l.add("a1");
l.add("a2");
System.out.println(l);
l.addFirst("a100"); //添加到头
l.addLast("a200"); //添加到尾
System.out.println(l);
System.out.println(l.getFirst()); //获取头
System.out.println(l.getLast()); //获取尾
l.removeFirst(); //移除头
l.removeLast(); //移除尾
System.out.println(l);
}
}