要操作先有数-教你增加链表数据 | 带你学《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面向对象编程文章查看此处

相关文章
|
2天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
16 0
|
2天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)
【4月更文挑战第28天】本文简要介绍了自动化测试的实战应用,通过一个在线问卷调查(&lt;https://www.sojump.com/m/2792226.aspx/&gt;)为例,展示了如何遍历并点击问卷中的选项。测试思路包括找到单选和多选按钮的共性以定位元素,然后使用for循环进行点击操作。代码设计方面,提供了Java+Selenium的示例代码,通过WebDriver实现自动答题。运行代码后,可以看到控制台输出和浏览器的相应动作。文章最后做了简单的小结,强调了本次实践是对之前单选多选操作的巩固。
11 0
|
20小时前
|
XML 前端开发 Oracle
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
8 2
|
2天前
|
存储 NoSQL 安全
java 中通过 Lettuce 来操作 Redis
java 中通过 Lettuce 来操作 Redis
java 中通过 Lettuce 来操作 Redis
|
3天前
|
分布式计算 DataWorks 监控
DataWorks操作报错合集之DataWorks在调用java sdk的createFile功能时报错com.aliyuncs.exceptions.ClientException: 1201111000 如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
9 1
|
3天前
|
安全 Java 网络安全
深入理解Java异常处理网络安全与信息安全:保护数据的关键策略
【4月更文挑战第29天】本文将深入探讨Java中的异常处理机制,包括异常的概念、分类、捕获和处理等方面。通过详细的解析和实例演示,帮助读者更好地理解Java异常处理的原理和应用。 【4月更文挑战第29天】在数字化时代,数据成为最宝贵的资产之一。随着网络攻击的日益猖獗,了解并实施有效的网络安全和信息保护措施变得至关重要。本文将深入探讨网络安全漏洞的概念、加密技术的重要性以及提升个人和企业的安全意识的必要性。我们将分析当前的安全挑战,并提供一系列实用的防护策略,旨在帮助读者构建一个更加安全的数字环境。
|
3天前
|
Java 关系型数据库 MySQL
【JDBC编程】基于MySql的Java应用程序中访问数据库与交互数据的技术
【JDBC编程】基于MySql的Java应用程序中访问数据库与交互数据的技术
|
4天前
|
存储 前端开发 测试技术
《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)
【4月更文挑战第27天】本文介绍了使用Java+Selenium进行Web自动化测试时,如何遍历和操作多选按钮的方法。文章分为两个部分,首先是一个本地HTML页面的示例,展示了多选按钮的HTML代码和页面效果,并详细解释了遍历多选按钮的思路:找到所有多选按钮的共同点,通过定位这些元素并放入list容器中,然后使用for循环遍历并操作。 第二部分介绍了在JQueryUI网站上的实战,给出了被测网址,展示了代码设计,同样使用了findElements()方法获取所有多选按钮并存储到list中,然后遍历并进行点击操作。最后,文章对整个过程进行了小结,并推荐了作者的其他自动化测试教程资源。
12 0
|
5天前
|
前端开发 测试技术 Python
《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)
【4月更文挑战第25天】本文介绍了自动化测试中如何处理单选和多选按钮的操作,包括它们的定义、HTML代码示例以及如何判断和操作这些元素。文章通过一个简单的HTML页面展示了单选和多选框的示例,并提供了Java+Selenium实现的代码示例,演示了如何检查单选框是否选中以及如何进行全选操作。
12 0
|
6天前
|
Java Apache
java读取excel数据案例
Java代码示例使用Apache POI库读取Excel(example.xlsx)数据。创建FileInputStream和XSSFWorkbook对象,获取Sheet,遍历行和列,根据单元格类型(STRING, NUMERIC, BOOLEAN)打印值。需引入Apache POI库并确保替换文件路径。
7 1