菜鸟的学习之路(10) — LinkedList类
2013-11-19 15:01
225 查看
一.认识LinkedList类:
实现的接口:Serializable,Cloneable,Iterable,Collection,Deque,List,Queue
父类:AbstractSequentialList
LinkedList的底层是用双链表的形式实现。
* 双向链表简要理解:
* 运行效果:
* 图解:
LinkedList的底层使用双向链表实现(LinkedList的双向链表最好看源码),所以相对于ArrayList有很多优点,也有缺点。
优点:当执行插入或删除操作时改变的是next和previous的引用,而ArrayList是一个数组,当进行添加删除操作时需要操作节点以后得元素进行移动或前进(例如100个元素,当删除第一个元素时后面的99个都要向前移动一个位置)。所以当执行插入或删除操作时使用linkedList效率会大大提升。
缺点:当进行搜索操作时,因为LinkedList是双向链表,元素不是连续排放,当进行搜索是需要一个一个的进行查找,所以效率不高,而ArrayList的底层是数组实现,所以元素是连续存放的,当查找时通过索引就能查找到。
二.简单的使用:
我只演示部分方法的使用:
打印:
当向LinkedList中添加对象时,会在LikedList内部生成一个Entry对象,Entry的部分结构
Entry
{
Entry previous;//前趋
Object element;//这个是我们向LinkedList中添加的元素。
Entry next;//后趋
}
再把创建出的Entry对象添加链表中,LinkedList维护的是一个个Entry对象。
Entry类是LinkedList类中的内部类。详细的代码在源代码中都有。建议大家去看一看。
实现的接口:Serializable,Cloneable,Iterable,Collection,Deque,List,Queue
父类:AbstractSequentialList
LinkedList的底层是用双链表的形式实现。
* 双向链表简要理解:
* 运行效果:
* 图解:
LinkedList的底层使用双向链表实现(LinkedList的双向链表最好看源码),所以相对于ArrayList有很多优点,也有缺点。
优点:当执行插入或删除操作时改变的是next和previous的引用,而ArrayList是一个数组,当进行添加删除操作时需要操作节点以后得元素进行移动或前进(例如100个元素,当删除第一个元素时后面的99个都要向前移动一个位置)。所以当执行插入或删除操作时使用linkedList效率会大大提升。
缺点:当进行搜索操作时,因为LinkedList是双向链表,元素不是连续排放,当进行搜索是需要一个一个的进行查找,所以效率不高,而ArrayList的底层是数组实现,所以元素是连续存放的,当查找时通过索引就能查找到。
二.简单的使用:
我只演示部分方法的使用:
public class Test { public static void main(String args[]){ LinkedList list = new LinkedList(); list.add("A"); list.add("C"); list.add("D"); System.out.println("list中有的元素:"+list); list.add(1,"B"); //通过指定位置插入元素 System.out.println("list中有的元素:"+list); list.addFirst("a"); //插入列表开头 list.addLast("d"); //插入列表结尾 System.out.println("list中有的元素:"+list); System.out.println("第一个元素:"+list.getFirst()+".最后一个元素:"+list.getLast()); System.out.println("返回第二个元素:"+list.get(1)); System.out.println("此时列表中的元素个数:"+list.size()); System.out.println("删除第一个结点:"+list.removeFirst()); System.out.println("删除最后一个节点:"+list.removeLast()); System.out.println("list中有的元素:"+list); } }
打印:
当向LinkedList中添加对象时,会在LikedList内部生成一个Entry对象,Entry的部分结构
Entry
{
Entry previous;//前趋
Object element;//这个是我们向LinkedList中添加的元素。
Entry next;//后趋
}
再把创建出的Entry对象添加链表中,LinkedList维护的是一个个Entry对象。
Entry类是LinkedList类中的内部类。详细的代码在源代码中都有。建议大家去看一看。
相关文章推荐
- 菜鸟Android学习之路19——星级评分条
- IOS开发---菜鸟学习之路--(十六)-将Image转换为Base64
- 菜鸟成长之路-SQL Server事物学习,高手跳过
- 菜鸟的学习之路(4) —java static和final使用
- java菜鸟的Python学习之路(1)
- android菜鸟学习笔记10----Intent及<intent-filter>
- IOS开发---菜鸟学习之路--(十五)-如何实现拍照功能
- 菜鸟的Python学习之路(流水账)
- 菜鸟入门:Java程序员学习之路
- 王亟亟的Python学习之路(10)-函数对象的作用域,函数作为返回值,闭包
- C#基础学习第三天(.net菜鸟的成长之路-零基础到精通)
- hadoop学习之路_10、自定义序列化类
- 王亟亟的Python学习之路(10)-匿名函数
- IOS开发---菜鸟学习之路--(十)-实现新闻详细信息浏览页面
- android <初级篇> 第一个工程Hello World ! ——菜鸟的学习之路
- IOS开发---菜鸟学习之路--(二)-数据获取
- 菜鸟前端之路笔记1——学习路线
- ddpush 学习之路 10 MyTcpClient.java
- windows API 菜鸟学习之路(二)
- C#基础学习第二天(.net菜鸟的成长之路-零基础到精通)