序列分先進先出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(); }