序列分先进先出FIFO,先进后出FILO
FIFO在Java中又叫Queue 队列
FILO在Java中又叫Stack 栈html
示例 1 : LinkedList 与 List接口java
与ArrayList同样,LinkedList也实现了List接口,诸如add,remove,contains等等方法。数组
示例 2 : 双向链表 - Deque数据结构
除了实现了List接口外,LinkedList还实现了双向链表结构Deque,能够很方便的在头尾插入删除数据框架
什么是链表结构: 与数组结构相比较,数组结构,就好像是电影院,每一个位置都有标示,每一个位置之间的间隔都是同样的。 而链表就至关于佛珠,每一个珠子,只链接前一个和后一个,不用关心除此以外的其余佛珠在哪里。
code
package collection; import java.util.LinkedList; import charactor.Hero; public class TestCollection { public static void main(String[] args) { //LinkedList是一个双向链表结构的list LinkedList<Hero> ll =new LinkedList<Hero>(); //因此能够很方便的在头部和尾部插入数据 //在最后插入新的英雄 ll.addLast(new Hero("hero1")); ll.addLast(new Hero("hero2")); ll.addLast(new Hero("hero3")); System.out.println(ll); //在最前面插入新的英雄 ll.addFirst(new Hero("heroX")); System.out.println(ll); //查看最前面的英雄 System.out.println(ll.getFirst()); //查看最后面的英雄 System.out.println(ll.getLast()); //查看不会致使英雄被删除 System.out.println(ll); //取出最前面的英雄 System.out.println(ll.removeFirst()); //取出最后面的英雄 System.out.println(ll.removeLast()); //取出会致使英雄被删除 System.out.println(ll); } }
示例 3 : 队列 - Queuehtm
LinkedList 除了实现了List和Deque外,还实现了Queue接口(队列)。
Queue是先进先出队列 FIFO,经常使用方法:
offer 在最后添加元素
poll 取出第一个元素
peek 查看第一个元素
blog
package collection; import java.util.LinkedList; import java.util.List; import java.util.Queue; import charactor.Hero; public class TestCollection { public static void main(String[] args) { //和ArrayList同样,LinkedList也实现了List接口 List ll =new LinkedList<Hero>(); //所不一样的是LinkedList还实现了Deque,进而又实现了Queue这个接口 //Queue表明FIFO 先进先出的队列 Queue<Hero> q= new LinkedList<Hero>(); //加在队列的最后面 System.out.print("初始化队列:\t"); q.offer(new Hero("Hero1")); q.offer(new Hero("Hero2")); q.offer(new Hero("Hero3")); q.offer(new Hero("Hero4")); System.out.println(q); System.out.print("把第一个元素取poll()出来:\t"); //取出第一个Hero,FIFO 先进先出 Hero h = q.poll(); System.out.println(h); System.out.print("取出第一个元素以后的队列:\t"); System.out.println(q); //把第一个拿出来看一看,可是不取出来 h=q.peek(); System.out.print("查看peek()第一个元素:\t"); System.out.println(h); System.out.print("查看并不会致使第一个元素被取出来:\t"); System.out.println(q); } }
练习: 使用LinkedList实现Stack栈接口
与FIFO(先入先出的)队列相似的一种数据结构是FILO先入后出栈Stack
根据接口Stack :
实现类:MyStack队列
public class MyStack implements Stack
并向这个栈中,压入5个英雄,接着弹出5个英雄
再解释一下栈: 栈的结构,就像给弹夹添加子弹同样,先添加的子弹,就放在了最下面,打手枪的时候,只能从最上面取子弹。
package collection; import charactor.Hero; public interface Stack { //把英雄推入到最后位置 public void push(Hero h); //把最后一个英雄取出来 public Hero pull(); //查看最后一个英雄 public Hero peek(); }