改数需备案-记录链表数据量 | 带你学《Java面向对象编程》之九十一

简介: 本节结合代码带领读者通过在类中添加计数成员count来记录链表长度,实现size()方法来返回count值。

上一篇:要操作先有数-教你增加链表数据 | 带你学《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()) ;
    }
}

image.png
图一 执行结果图

只是对于数据保存中的一个辅助功能。

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:教你实现链表判空与取值方法 | 带你学《Java面向对象编程》之九十二
更多Java面向对象编程文章查看此处

相关文章
|
4月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
44 7
|
4月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
51 5
|
4月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
29天前
|
Java 开发者
Java 面向对象编程
总之,Java 的面向对象编程为开发者提供了一种有效的编程范式,帮助他们构建出高质量、可维护的软件系统。理解和掌握面向对象的概念和原则是成为优秀 Java 开发者的重要基础。
46 3
|
3月前
|
Java
java数据结构,双向链表的实现
文章介绍了双向链表的实现,包括数据结构定义、插入和删除操作的代码实现,以及双向链表的其他操作方法,并提供了完整的Java代码实现。
java数据结构,双向链表的实现
|
2月前
|
存储 安全 Java
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
27 3
|
4月前
|
存储 Java
|
4月前
|
存储 Java
java实现单链表的创建、增、删、改、查
这篇文章详细介绍了Java中如何实现单链表的创建以及对单链表进行增加、删除、修改、查询等操作的方法,并提供了相应的代码示例。
java实现单链表的创建、增、删、改、查
|
4月前
|
存储 前端开发 JavaScript
【前端学java】面向对象编程基础-类的使用(4)
【8月更文挑战第9天】面向对象编程基础-类的使用
28 0
【前端学java】面向对象编程基础-类的使用(4)
|
4月前
|
存储 Java 开发者
揭秘!HashMap底层结构大起底:从数组到链表,再到红黑树,Java性能优化的秘密武器!
【8月更文挑战第24天】HashMap是Java集合框架中的核心组件,以其高效的键值对存储和快速访问能力广受开发者欢迎。在JDK 1.8及以后版本中,HashMap采用了数组+链表+红黑树的混合结构,实现了高性能的同时解决了哈希冲突问题。数组作为基石确保了快速定位;链表则用于处理哈希冲突;而当链表长度达到一定阈值时,通过转换为红黑树进一步提升性能。此外,HashMap还具备动态扩容机制,当负载因子超过预设值时自动扩大容量并重新哈希,确保整体性能。通过对HashMap底层结构的深入了解,我们可以更好地利用其优势解决实际开发中的问题。
123 0
下一篇
DataWorks