java数据结构之链表(java核心卷Ⅰ读书笔记)

1.链表

数组和ArrayList的一个重大缺陷就是:从中间位置删除一个元素要付出很大的代价,因为在这个元素删除之后,所有的元素都要向前端移动,在中间的某个位置插入一个元素也是这个原因。

(小感悟:sun-zheng说了一句,每天在那安静地写代码,才是最轻松的活,不用这跑那跑,不用费太多的口舌,每天吹着空调,外面就是建筑地,别人风吹日赛,真的写代码是一件最轻松的事情)

我们在数据结构这门课中,在链表中添加或者删除某个元素时候,绕来如去的指针可能已经给人留下了极坏的印象,那么Java的集合类库提供了一个类LinkedList给开发者带来了极大的方便

******************

链表的

*******

也是一样的输出结果

**************************

********

直接调用Iterator接口的包含的3个方法, next()  hasNext()  remove()  就可以完场大部分功能

****************

迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

  Java中的Iterator功能比较简单,并且只能单向移动:
  (1) 使用方法iterator()【由集合对象对象调用这个方法】要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
  (2) 使用next()获得序列中的下一个元素。 // 下面的这3个方法是由Iterator iter 中的iter调用的
  (3) 使用hasNext()检查序列中是否还有元素。
  (4) 使用remove()将迭代器新返回的元素删除。

**************************

Iterator是Java迭代器最简单的实现,为List设计的ListIterator接口具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

***************************

查找

时间: 2024-10-13 21:23:14

java数据结构之链表(java核心卷Ⅰ读书笔记)的相关文章

java数据结构之HashSet和HashMap(java核心卷Ⅰ读书笔记)

增加 删除 remove方法,可以删除指定的一个元素. 查找 ********************* **************************** HashSet既不可以用 0 1 2 3这种索引来确定元素的值,也不能用key来确定元素的值 ********************* HashSet就长这样的  ["aa" , "bb"] 长成这样的数据结构 ****************** HashMap长成这样的    {a=123  ,  

Java高手真经_编程基础卷——读书笔记(9)——Java类修饰符

Java修饰符 一.简述 访问控制修饰符:public .默认无修饰符.private.protected 其他修饰符:abstract.static.final.native public:意思是公开的,使用范围最广 默认无修饰符,什么也不写:在同一个包内可见 private :私有的 protected:受保护的 abstract:抽象的 static:静态的 final:最终的 native:本地的 sysnchronized:同步 以上是修饰符子字面意思,但其真实的意义也差不多少.下面就

Java高手真经_编程基础卷——读书笔记(7)——Eclipse命名小知识

Eclipse作为开发Java的IDE,从出现到现在已经有好多年的时间了,其丰富的特性,操作容易和在提高生产力方面受到了广大开发者的青睐. 在大家打开Eclipse的时候,加载界面Eclipse字样的右下方都会有一个英文单词,这个便是Eclipse的代号,每个版本代号不同. -------此处以下为摘抄自网络---------- Eclipse自3.1开始使用木星的卫星作为版本名,例如: 木卫一:伊奥 lo 木卫二:欧罗巴 Europa 木卫三:伽倪墨得斯 Ganymede 木卫四:卡利斯托 C

C++Windows核心编程读书笔记

转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔记": 关键词:c++windows 核心 编程 读书笔记 这篇笔记是我在读<windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁

《分布式Java应用之基础与实践》读书笔记一

分布式Java应用的体系结构知识简单分为: 网络通信:包括协议和IO 消息方式的系统间通信:包括基于Java包.基于开源框架.性能角度 远程调用方式的系统间通信:包括基于Java包.基于开源框架.性能角度 大型应用拆分为多个子系统来实现,这些子系统可能部署在同一台机器,或者不同机器的多个不同JVM中,每个子系统对应一个JVM.但这些子系统又不是完全独立的,要相互通信来共同实现业务功能,对于此类Java引用,我们称之为分布式Java引用.通常有两种典型的方法来实现. 基于信息方式实现系统间的通信,

Java SE 8 for the Really Impatient读书笔记——Java 8 Lambda表达式

1. lambda表达式的语法 语法十分简单:参数->主体 1.1 参数 可以是零个参数,一个参数,也可以是多个参数,参数可以指定类型,在编译器可以推导出参数类型的情况下,也可以省略参数类型. 两个参数的例子: (String first, String second)-> Integer.compare(first.length(), second.length()) 0个参数的例子: () -> { for (int i = 0; i < 1000; i++) doWork()

Java数据结构之链表的原理及LinkedList的部分源码剖析

一.为什么要学习数据结构? 做为一名程序员,不管你是用什么编程语言,数据结构是取底层的东西.就相当于盖楼的地基一样,地基做不好,上边再好也没有用. 在高级语言中,一般会对这些基础的数据结构进行封装,我们学要学习这些基础的东西吗? 当然是的,只有知道这些基础的东西,我们才能更好地使用语言封装好的api.举个最简单的例子,在Java中,List的实现类有ArrayList,LinkedList,Vector,你知道在什么情况下用哪个效率最高吗?只有知道其底层源才能更好地利用. 如何学习数据结构? 可

Java数据结构之链表

---恢复内容开始--- 概述 数组和链表都是最基础的线性数据结构,可以用来实现栈,队列等非线性,有特定应用场景的数据结构,我们发现数组作为数据存储结构有很很多缺陷,在无序数组中搜索效率低,在有序数组中插入效率又很低,无论哪种情况删除操作效率都很低:而且数组一旦创建,大小不可更改. 本文我们介绍一种新的数据储存结构,链表,除非是要频繁通过下标访问数据,否则在很多场合都可以用链表替换数组: 1链表组成结构 链表通常由一连串节点组成,每个节点包含该节点的数据和指向上一节点或者下一节点的引用(链接)

Java数据结构——单链表

一.单链表的概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.这组存储单元可以是连续的,也可以是不连续的. 存储单元由两部分组成,数据源和指针,数据源放数据,指针指向下个存储单元. 二.单链表的结构 采用Node实体类类标识,其中data为存储的数据,next为下一个结点的指针. //链表的实体类 class Node{ public int data; public Node next; public Node(int data) { this.data =