Java自學-集合框架 LinkedList

Java集合框架 LinkedList

序列分先進先出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 查看第一個元素
隊列 - Queueblog

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();
}
相關文章
相關標籤/搜索