【本節目标】
通過閱讀本節内容,你将學會通過在每次添加新節點時使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面向對象程式設計文章檢視此處