博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 集合LinkedList
阅读量:5226 次
发布时间:2019-06-14

本文共 726 字,大约阅读时间需要 2 分钟。

LinkedList 内部是用双向链表实现的。可以为空,可以重复,是有序的,线程不安全。

实现原理

属性: 

1.size 长度

2.node<E> first 第1各元素

3.node<E> last 最后一个元素

 

内部类

Node<E> 里面有3个属性,E element, Node<E> pre, Node<E> next; 构造方法NOde(Node pre,E e,Node next)

 

方法

#增

1.add(E e)  默认是往链表的最后一个添加元素。所以我们要获取最后一个元素、然后new一个node出来,new的时候用Node<E>的构造方法,参数是(last,E,null)因为之前获取最后一个元素,放在我new的元素前一个,然后第2个参数就是当前元素的值,因为加在最后一个所以next默认是null。然后 我们要判断刚刚获取的最后一个元素是不是null,如果是null的,证明他是第1次加入链表里面,所以我们这个时候要把 属性first 给刚刚新new出来的对象。如果不是null,那么我们刚刚获取最后一个元素的next指向new出来的对象。最后size++就可以了

#查询

 2.get(index) 根据索引获取,这边用到1次2分法查询。先判断 index 和 size>>1 比较,如果index> siez>>1的话,那么就表示要查询的index在size/2的下半段。那这样只要循环下半段,如果小于的话,那就在上半段。只要循环上半段,

 

3删除

reomve(index)  这边记得 最后要把删的元素设置成null

 

转载于:https://www.cnblogs.com/tangwangming/p/8793924.html

你可能感兴趣的文章
auth模块
查看>>
javascript keycode大全
查看>>
前台freemark获取后台的值
查看>>
log4j.properties的作用
查看>>
游戏偶感
查看>>
Leetcode: Unique Binary Search Trees II
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Spring-hibernate整合
查看>>
c++ map
查看>>
exit和return的区别
查看>>
js += 含义(小知识)
查看>>
B2321 [BeiJing2011集训]星器 数学&&物理
查看>>
201571030319 四则运算
查看>>
RestTemplate 调用本地服务 connection refused
查看>>
.NET方向高级开发人员面试时应该事先考虑的问题
查看>>
台达PLC modbus 不支持04功能码
查看>>
发布一个JavaScript工具类库jutil,欢迎使用,欢迎补充,欢迎挑错!
查看>>
discuz 常用脚本格式化数据
查看>>
洛谷P2777
查看>>
PHPStorm2017设置字体与设置浏览器访问
查看>>