取得链表中保存的元素个数:public int size()
既然每一个链表对象都只有一个root根元素,那么每一个链表就有自己的长度,可以直接在Link类里面直接设置一个count属性,随后每一次数据添加完成之后,可以进行个数的自增
修改Link.java类
增加一个count属性
private int count = 0; // 保存元素的个数
在add()方法里面增加数据的统计操作
public void add(String data){ // 假设不允许有null if (data == null){ return ; } Node newNode = new Node(data); // 要保存的数据 if (this.root == null){ // 如果当前没有根节点,则设置为根节点 this.root = newNode; // 保存根节点 }else{ // 存在根节点,则到下一节点找保存数据 this.root.AddNode(newNode); } this.count ++; // 每一次保存完成后数量加一 }
为Link类增加一个size()方法,获得数据的长度
public int size(){ // 取得保存的数据量 return this.count; }
完整代码如下
class Link{ // 链表类,外部只能看这一个类 // 定义在内部,主要为Link类服务 private class Node{ // 定义的节点类 private String data; // 保存数据 private Node next; // 引用关系 public Node(String data){ this.data = data; } public void AddNode(Node newNode){ if(this.next == null){ // 当前的下一个节点为空 this.next = newNode; }else{ // 向后继续保存 this.next.AddNode(newNode); } } public void printNode(){ // 打印Node信息 System.out.println(this.data); if( this.next != null){ this.next.printNode(); } } // ===================以上为内部类============================ } private Node root; // 根结点 private int count = 0; // 保存元素的个数 public void add(String data){ // 假设不允许有null if (data == null){ return ; } Node newNode = new Node(data); // 要保存的数据 if (this.root == null){ // 如果当前没有根节点,则设置为根节点 this.root = newNode; // 保存根节点 }else{ // 存在根节点,则到下一节点找保存数据 this.root.AddNode(newNode); } this.count ++; // 每一次保存完成后数量加一 } public int size(){ // 取得保存的数据量 return this.count; } public void print(){ // 打印所有Node信息 this.root.printNode(); } } public class LinkDemo{ public static void main(String args[]){ Link all = new Link(); all.add("Hello"); all.add("World"); all.add(null); all.print(); System.out.println(all.size()); } }
本程序中,null不会被保存