上一篇:要操作先有数-教你增加链表数据 | 带你学《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的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学