要操作先有数-教你增加链表数据 | 带你学《Java面向对象编程》之九十

简介: 本节结合代码详解了实现链表结构中实现数据增加操作的方法,并在主方法中进行了调用验证。

上一篇:升华数组-使用链表灵活整理数据 | 带你学《Java面向对象编程》之八十九
【本节目标】
通过阅读本节内容,你将掌握实现添加链表数据的方法,对链表中Node节点应该具备的基本操作有进一步的理解。

数据保存:public void add(E e)

通过之前的分析可以发现在进行链表操作的过程之中为了避免转型的异常应该使用的泛型,同时也应该设计一个链表的标准接口,同时具体实现该接口的时候还应该通过Node类做出节点的关系描述。
范例:基本结构

interface ILink<E> {         //设置泛型避免安全隐患
     public void add(E e) ;
}
class LinkImpl<E> implements ILink<E> {
      private class Node {         //保存节点的数据关系
           private E data ;      //保存数据
           private Node next ;       //保存下一个引用
           public Node(E data) {          //有数据的情况下才有意义
               this.data = data ;
           }
      }
      //------------以下为Link类中定义的结构-----------------
}

在现在所定义的Node类之中并没有出现有setter与getter方法,是因为内部类中的私有属性也方便外部类直接访问。
范例:实现数据增加

interface ILink<E> {         //设置泛型避免安全隐患
     public void add(E e) ;
}
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 ;       //保存根元素

      //------------以下为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);       //将新节点保存在合适的位置
        }     
    }
}
public class LinkDemo{
    public static void main(String args[])  {
        ILink<String> all = new LinkImpl<String>() ;
        all.add("Hello") ;
        all.add("World") ;  
        all.add("MLDN") ;   
    }
}

Link类只是负责数据的操作与根节点的处理,而所有后续节点的处理全部都是由Node类负责完成的。

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

下一篇:改数需备案-记录链表数据量 | 带你学《Java面向对象编程》之九十一
更多Java面向对象编程文章查看此处

相关文章
|
15天前
|
安全 Java 数据安全/隐私保护
|
26天前
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
21 1
|
1月前
|
存储 Java
JAVA字符串与其他类型数据的转换
JAVA字符串与其他类型数据的转换
27 4
|
26天前
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
15 1
|
26天前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
90 3
|
29天前
|
缓存 NoSQL Java
java中复杂业务情况下的集合操作(增减集合同步数据)
java中复杂业务情况下的集合操作(增减集合同步数据)
27 0
|
29天前
|
自然语言处理 Java
这是什么操作?java中的变量竟然可以先使用后声明?
这是什么操作?java中的变量竟然可以先使用后声明?
14 0
|
29天前
|
SQL Java
使用java中的String类操作复杂的字符串
使用java中的String类操作复杂的字符串
9 0
|
29天前
|
Java
Java面向对象编程
Java面向对象编程
|
30天前
|
Java
java操作字符串
java操作字符串
9 1