写点什么

Java 小白翻身教程 - 链表结构与编译大法(1)

  • 2022 年 5 月 16 日
  • 本文字数:1708 字

    阅读完需:约 6 分钟

[](()步骤 2 类里面有顾客属性


================================================================================


嗯,目标是明确的,我需要写一个 Java 类,然后这个类可以存放顾客的信息。我在 tool 文件夹里面随便写了一个 CustNode.java(意思就是顾客的节点类):



代码如下:


package tool;


import entity.Customer;


class CustNode{


public Customer data;


}


CustNode 类里面维护一个顾客的属性,为了方便起见,就直接用 public 了,反正我们自己用用的,无所谓。


[](()步骤 3 排队打饭


============================================================================


可是这样也没用啊,这个类最多就是维护一个顾客的信息,没办法保存多个顾客啊。这可愁死我啦,想了老半天也没想出办法来。于是,我就去请教老板,老板正在炒菜,没空搭理我,但是也没赶我走。


“这样吧,马上会有很多顾客来取餐,想不出来就先放放,你在这帮我看着。”老板说。


“让我看排队啊,这有啥意思哦?”我虽然满腹牢骚,但还是照做了,一边拿出手机刷刷微博,一 边看着顾客在排队取餐。


没想到,看着看着,我突然有了灵感。


[](()步骤 4 从一个顾客联系到另一个顾客


=====================================================================================



顾客 A,B,C 三个人在排队,顾客 A 知道他前面的是顾客 B,顾客 B 知道他前面的是顾客 C。那么从程序的角度来看,A 里面肯定有一个属性是 B 的引用,B 里面肯定有一个属性是 C 的引用。


那么,我只要在 CustNode 里面维护下一个数据的引用,不就可以实现在一个类里面保存多个顾客了吗?


[](()步骤 5 加一个 next 字段


=================================================================================


class CustNode{


public Customer data;


public CustNode next;


}


next 就代表下一个数据。


[](()步骤 6 有参构造方法


==============================================================================


为了方便起见,我写一个有参数的构造方法,这样的好处就是 new 的时候直接就可以给 data 赋值了。


class CustNode{


public Customer data;


public CustNode next;


public CustNode(Customer data){


this.data = data;


}


}


[](()步骤 7 用一个新的类维护 CustNode


========================================================================================


我盯着 CustNode 类看了半天,发现一个事情,就是如果我用这个类,最多只能装两个顾客,一个 data,一个 next。如果再装,就有点难度了。所以,我需要再写一个类,来维护 CustNode,然后再提供一个一个 add 方法和 display 方法,分别用来添加和展示顾客的数据。


我憋了半天终于把代码写出来了。


[](()步骤 8 TuziLinkedList.java


===========================================================================================


package tool;


import entity.Customer;


import tool.CustNode;


public class TuziLinkedList{


public CustNode firstNode; //第一个节点


public CustNode currentNode;//当前的节点


//新增的方法


pu 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 blic void add(Customer cst){


//将数据用节点类包装好,这样才能实现下一个数据的指向


CustNode data = new CustNode(cst);


//先判断是否是第一个节点


if(this.firstNode == null){


this.firstNode = data;


this.currentNode = data;


}else{


//不是第一个节点,就指向当前节点的下一个节点,即 currentNode.next


this.currentNode.next = data;


//因为已经指向下一个了,所以当前节点也要移动过来


this.currentNode = data;


}


}


//展示所有节点


public void display(){


//第一步,肯定是展示第一个节点(this 其实可以省略的)


if(firstNode != null){


System.out.println(firstNode.data.getName());


//然后循环,一直寻找 next 是否为空


CustNode node = firstNode.next;


while(node != null ){


String name = node.data.getName();


System.out.println(name);


//循环的最后,再指向下一个节点,继续下一轮


node = node.next;


}


}


}


}


[](()步骤 9 设计思路


============================================================================

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
Java小白翻身教程-链表结构与编译大法(1)_Java_爱好编程进阶_InfoQ写作社区