天天看點

改數需備案-記錄連結清單資料量 | 帶你學《Java面向對象程式設計》之九十一

上一篇:要操作先有數-教你增加連結清單資料 | 帶你學《Java面向對象程式設計》之九十

【本節目标】

通過閱讀本節内容,你将學會通過在每次添加新節點時使count自增實作連結清單長度的記錄,借此實作size()方法供給調用方擷取連結清單長度。

擷取資料長度:public int size()

在連結清單之中往往需要儲存大量的資料,那麼這些資料往往需要進行資料個數的統計操作,是以應該在LinkImpl子類裡面追加有資料統計資訊,同時當增加或删除資料時都應該對個數進行修改。

1、在ILink接口裡面追加一個擷取資料個數的方法:

public int size() ;    //擷取資料的個數           

2、在LinkImpl子類裡面追加有一個個數統計的屬性

private int count ;     //儲存資料的個數           

3、在add()方法裡面進行資料個數的追加:

public void add(E e){
    if(e == null){
        return ;
    }
    //資料本身是不具有關聯特性的,隻有Node類有,要想關聯處理就必須将資料包裝在Node類中
    Node newNode = new Node(e);    //建立一個新的節點
    if (this.root == null){            //現在沒有根節點
         this.root = newNode;       //第一個節點作為根節點
    }else{                          //根節點存在
         this.root.addNode(newNode);      //将新節點儲存在合适的位置
    }   
         this.count++ ;  
}           

4、需要在LinkImpl子類裡面來傳回資料的個數:

public int size() {
 return this.count ;
  }
interface ILink<E> {         //設定泛型避免安全隐患
       public void add(E e) ;   //增加資料
       public int size() ;    //擷取資料的個數
}
class LinkImpl<E> implements ILink<E> {
      private class Node {         //儲存節點的資料關系
            private E data ;      //儲存資料
            private Node next ;       //儲存下一個引用
            public Node(E data) {          //有資料的情況下才有意義
                this.data = data ;
            }
            //第一次調用:this = LinkImpl.root ;
            //第二次調用:this = LinkImpl.root.next ;
            //第三次調用:this = LinkImpl.root.next.next ;
            public void addNode(Node newNode){      //儲存新的Node資料
                if (this.next == null) {   //目前節點的下一個節點為null
                     this.next = newNode;      //儲存目前節點
                }else {
                     this.next.addNode(newNode);
                }
            }
      }
      //------------以下為Link類中定義的成員-----------------
      private Node root ;       //儲存根元素
      private int count ;     //儲存資料的個數
      //------------以下為Link類中定義的方法-----------------
      public void add(E e){
         if(e == null){
             return ;
         }
        //資料本身是不具有關聯特性的,隻有Node類有,要想關聯處理就必須将資料包裝在Node類中
         Node newNode = new Node(e);    //建立一個新的節點
         if (this.root == null){            //現在沒有根節點
            this.root = newNode;       //第一個節點作為根節點
         }else{                          //根節點存在
            this.root.addNode(newNode);       //将新節點儲存在合适的位置
         }   
         this.count++ ;  
     }
     public int size() {
         return this.count ;
     }
}
public class LinkDemo{
    public static void main(String args[])  {
        ILink<String> all = new LinkImpl<String>() ;
        System.out.println("【增加之前】資料個數:" + all.size()) ;
        all.add("Hello") ;
        all.add("World") ;  
        all.add("MLDN") ;   
        System.out.println("【增加之後】資料個數:" + all.size()) ;
    }
}           
改數需備案-記錄連結清單資料量 | 帶你學《Java面向對象程式設計》之九十一

圖一 執行結果圖

隻是對于資料儲存中的一個輔助功能。

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:教你實作連結清單判空與取值方法 | 帶你學《Java面向對象程式設計》之九十二 更多Java面向對象程式設計文章檢視此處