• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Java集合框架LinkedList详解及实例

Java集合框架LinkedList详解及实例

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了java集合框架详解,java集合框架,java集合框架图,java中的集合框架,java集合框架练习题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Java集合框架LinkedList详解

LinkedList定义

package java.util;
public class LinkedList<E>
 extends AbstractSequentialList<E>
 implements List<E>, Deque<E>, Cloneable, java.io.Serializable{
 transient int size = 0;
 transient Node<E> first;
 transient Node<E> last;
}
</div>

LinkedList概述

  LinkedList以双向链表实现,允许重复。(如下Node的实现)并保留头指针和尾指针。

 private static class Node<E> {
  E item;
  Node<E> next;
  Node<E> prev;

  Node(Node<E> prev, E element, Node<E> next) {
   this.item = element;
   this.next = next;
   this.prev = prev;
  }
 }

</div>

  链表无容量限制,但双向链表本身使用了更多空间,也需要额外的链表指针操作。

  按下标访问元素—get(i)/set(i,e) 要悲剧的遍历链表将指针移动到位(如果i>数组大小的一半,会从末尾移起)。

 public E get(int index) {
  checkElementIndex(index);
  return node(index).item;
 }
 public E set(int index, E element) {
  checkElementIndex(index);
  Node<E> x = node(index);
  E oldVal = x.item;
  x.item = element;
  return oldVal;
 }

 Node<E> node(int index) {
  // assert isElementIndex(index);

  if (index < (size >> 1)) {
   Node<E> x = first;
   for (int i = 0; i < index; i++)
    x = x.next;
   return x;
  } else {
   Node<E> x = last;
   for (int i = size - 1; i > index; i--)
    x = x.prev;
   return x;
  }
 }

</div>

  插入、删除元素时修改前后节点的指针即可,但还是要遍历部分链表的指针才能移动到下标所指的位置,只有在链表两头的操作—add(), addFirst(),removeLast()或用iterator()上的remove()能省掉指针的移动。

  非线程安全,可以调用Collections.synchronizedList(new LinkedList<>());实现。

LinkedList用法

  简单举个例子:

  List<Integer> list = new LinkedList<>();
  list.add(4);
  list.add(2);
  list.add(3);
  list.add(5);

  for(int i:list)
   System.out.println(i);
  System.out.println(list);

</div>

  运行结果:

4
2
3
5
[4, 2, 3, 5]
</div>

  LinkedList会保留插入数据的顺序。

subList的使用

 List<Integer> list = new LinkedList<>();
  list.add(4);
  list.add(2);
  list.add(3);
  list.add(5);
  list.add(7);
  list.add(5);
  list.add(11);
  list.add(14);
  list.add(10);
  list.add(9);
  System.out.println(list);
  List<Integer> list2 = list.subList(3, 6);
  System.out.println(list2);
  list2.set(2, 50);

  System.out.println("============");
  System.out.println(list);
  System.out.println(list2);

</div>

  运行结果:

[4, 2, 3, 5, 7, 5, 11, 14, 10, 9]
[5, 7, 5]
============
[4, 2, 3, 5, 7, 50, 11, 14, 10, 9]
[5, 7, 50]
</div>

  调用LinkedList中的subList方法生成的新的list,内部引用的还是原来的链表,如果改变subList中的值,主list中的值也会跟着改变。

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java中的对象和引用详解
  • java回调机制实例详解
  • Java实现一个达达租车系统的步骤详解
  • Java 7大常见排序方法实例详解
  • 详解JAVA的封装
  • Java集合框架LinkedList详解及实例
  • Java集合框架中迭代器Iterator解析
  • Java 读取外部资源的方法详解及实例代码
  • Java实现一个达达租车系统的步骤详解
  • Java 7大常见排序方法实例详解

相关文章

  • 2017-05-28Java自定义异常_动力节点Java学院整理
  • 2017-05-28java生成验证码步骤归纳总结
  • 2017-05-28Kotlin 与 Java基本语法对比
  • 2017-05-28详解Java从后台重定向(redirect)到另一个项目的方法
  • 2017-05-28Hibernate映射之基本类映射和对象关系映射详解
  • 2017-05-28SWT(JFace)体验之GridLayout布局
  • 2017-05-28VerifyCodeServlet(一次性验证码)
  • 2017-05-28Java自定义注解实现Redis自动缓存的方法
  • 2017-05-28Spring事务Transaction配置的五种注入方式详解
  • 2017-05-28Spring MVC下 bootStrap服务器分页代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • spring boot整合Swagger2的示例代码
    • Spring MVC配置双数据源实现一个java项目同时连接两个数据库的方法
    • SpringMVC中使用bean来接收form表单提交的参数时的注意点
    • 老生常谈java路径中的反斜杠和斜杠的区别
    • Spring 数据库连接池(JDBC)详解
    • 详解Spring MVC事务配置
    • java application maven项目打自定义zip包实例(推荐)
    • Java String类详解_动力节点Java学院整理
    • 浅谈java中为什么实体类需要实现序列化
    • Java 中的CharArrayReader 介绍_动力节点Java学院整理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有