设计模式之_Iterator_02
package com.learn.dp.iterator;/*** LinkedList里面装了一大堆的Node* 既然Node的一个小手都有拉住另一个Node,我们只要记住开始的那个节点* * 我记住了一个head,记住了一个tail,如果你是第一个新加入进来的节点,* * * @author Leon.Sun**/
public class LinkedList {Node head = null;/*** 所以你会发现这样一个问题,当我们添加新节点的时候,如果我们知道哪个节点是最后一个,* 那就爽很多了,因为我们只要让最后一个拉住我们的小手就可以* 所以我们可以这么写*/Node tail = null;/*** 要有一个东西记录到底有多少个元素了* 其实这个size是冗余数据,你不记录也可以* 但是我们有一个冗余数据,没添加一个就让他加加* 最后只要return size就可以了*/int size = 0;/*** 当我们往链表里添加一个节点的时候,这个时候我们该怎么做,* 当然你要做各种判断,第一个如果head本身就是空的话,那么作为你新添加进来的内容,* 它就是第一个节点,添加进来新的Object* * 加入我们已经有了一个节点了,next指向一个空值,当我们再往里面添加一个节点的时候,* 把新的节点放在右边,把前面的next指向它,如果还有第三个,新加进来的就指向空值* * @param o*/public void add(Object o) {/*** 真正的内容是传进来的o,它的next是没有,所以只能传一个空值*/Node n = new Node(o,null);/*** 如果添加进来的是第一个节点,那head就等于n* head等于空,head等于n,tail也等于n* 你是第一个的话你既是头也是尾,如果tail不等于空,那就是一回事*/if(head==null) {head = n;tail = n;}/*** 把tail的这只小手*/tail.setNext(n);/*** tail要变成本身加入进来的节点* 这样一个新的节点就加入进来了*/tail = n;size++;}public int size() {return size;}}
package com.learn.dp.iterator;/*** 在Node里面包括两部分内容* @author Leon.Sun**/
public class Node {public Node() {super();}public Node(Object data, Node next) {super();this.data = data;this.next = next;}/*** 第一部分是数据本身*/private Object data;/*** 第二部分内容是小手要拉住下一个内容*/private Node next;public Object getData() {return data;}public void setData(Object data) {this.data = data;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}@Overridepublic String toString() {return "Node [data=" + data + ", next=" + next + "]";}}
package com.learn.dp.iterator;public class MainTest {public static void main(String[] args) {/*** 该用LinkedList*/LinkedList ll = new LinkedList();for(int i=0;i<15;i++) {ll.add(new Cat(i));}System.out.println(ll.size());}
}
15
设计模式之_Iterator_02相关推荐
- 【Design pattern】设计模式思路总结(一)
看了一周的设计模式,跟着小菜的思路走! 从简单工厂过渡策略,后面看的这几个模式都是在单一职责,开放--封闭原则,依赖倒转原则下不断的改进,采用模式写出的代码更容易扩展,维护! 比较容易懂. 装饰模式: ...
- GOF23设计模式(结构型模式)代理模式~
代理模式应用场景十分广泛,随便一个框架都会用到,因此学好代理模式对后续框架学习是最基本的要素!!今天我们就来讲讲代理模式! 目录 1.简介 1. 核心作用 2. 角色分析 2. 应用场景 4. 分类 ...
- GOF23设计模式(创建型模式)工厂模式
目录: 一:工厂模式的核心本质 二:关于面向对象的六大基本原则 三:工厂模式的三大类详解(代码示例,详细分析) 首先,上咱本GOF23所有工厂模式的分类表格!!! 创建型模式 单例模式.工厂模式.抽象 ...
- GOF23设计模式(创建型模式)单例模式
目录: 一:单例模式的核心作用.常见应用场景 二:五种单例模式及其实现 三:关于反射和反序列化破解单例模式的漏洞,以及相应的解决方案 四:测试五种单例模式的效率 一:核心作用及常见应用场景: 核心作用 ...
- Python七大原则,24种设计模式
七大设计原则: 1.单一职责原则[SINGLE RESPONSIBILITY PRINCIPLE]:一个类负责一项职责. 2.里氏替换原则[LISKOV SUBSTITUTION PRINCIPLE ...
- Java设计模式:单例模式
学而时习,稳固而之心, 好久没有复习java的知识了,今天有空温习了单例模式,这里记录一下 单例模式是常见的设计模式的一种,其特点就是 指一个类只有一个实例,且该类能自行创建这个实例 , 保证一个类 ...
- 设计模式中的六大基本原则
软件设计中的基本共识: 1,高内聚,低耦合:如果想使软件系统架构稳定,那么我们期望软件的各模块内元素结合的紧密,而模块之间的耦合度(关联性)越低越好.高内聚不仅体现在模块上,单独的类或方法也应该是内聚 ...
- JS中的7种设计模式
第九章Refactoring to OOP Patterns 重构为OOP模式 7种设计模式: 1,模版方法模式(template method) 2,策略模式(strategy) 3,状态模式(st ...
- 设计模式之创建型汇总
设计模式 创建型 工厂方法模式 定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 使用场景: 创建对象需要大量重复的代码 客户端(应用层)不依 ...
最新文章
- 【FFmpeg】FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 | 复用 | 解复用 )
- slice的部分说明
- 美团笔试最大矩形面积
- 腾达fh365虚拟服务器,腾达(Tenda)FH365路由器怎么设置?
- 【推荐】介绍两款Windows资源管理器,Q-Dir 与 FreeCommander XE(比TotalCommander更易用的免费资源管理器)...
- 【参数辨识】六关节机械臂动力学参数辨识(上)
- mysql丢数据无法启动mysql_mysql InnoDB数据无法启动解决办法
- Paip.断点调试MYSQL存储过程跟函数的解决方案大法
- 用Python做一个无限弹窗
- Java学习之贷款案例
- 一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取
- python识别验证码并自动登录_Python完全识别验证码自动登录实例详解
- 【BZOJ5336】【TJOI2018】party
- 我是猫,一只特立独行的猫
- 关于Windows api 多屏幕显示器识别ID问题。未解决
- 不用身份证刷手就能坐飞机,掌静脉还能被应用在哪里领域?
- 天猫魔盒部分adb shell或telnet下有用命令
- 第十二届蓝桥杯 ——国际象棋
- 网易考拉海购Java开发面经(已拿offer)
- 微信小程序-一个跑步app