全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java集合框架LinkedList详解及实例

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;
}

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;
  }
 }

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

  按下标访问元素—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;
  }
 }

  插入、删除元素时修改前后节点的指针即可,但还是要遍历部分链表的指针才能移动到下标所指的位置,只有在链表两头的操作—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);

  运行结果:

4
2
3
5
[4, 2, 3, 5]

  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);

  运行结果:

[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]

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

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


# Java  # LinkedList  # LinkedList详解  # LinkedList用法  # Java集合框架之Stack Queue Deque使用详解刨析  # Java集合框架入门之泛型和包装类  # Java 集合框架之List 的使用(附小游戏练习)  # Java集合框架超详细小结  # Java基础之集合框架详解  # 简单了解java集合框架LinkedList使用方法  # Java集合框架之List ArrayList LinkedList使用详解刨析  # 链表  # 遍历  # 也会  # 希望能  # 按下  # 谢谢大家  # 或用  # 举个例子  # 使用了  # transient  # io  # Serializable  # Deque  # Cloneable  # private  # static  # item  # int  # size  # Node 


相关文章: 如何批量查询域名的建站时间记录?  个人网站制作流程图片大全,个人网站如何注销?  如何在景安云服务器上绑定域名并配置虚拟主机?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何在云主机上快速搭建网站?  建站之星安装失败:服务器环境不兼容?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何在阿里云部署织梦网站?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  如何在新浪SAE免费搭建个人博客?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何通过NAT技术实现内网高效建站?  如何选择适配移动端的WAP自助建站平台?  如何选择服务器才能高效搭建专属网站?  北京网站制作的公司有哪些,北京白云观官方网站?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何用5美元大硬盘VPS安全高效搭建个人网站?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  c# Task.ConfigureAwait(true) 在什么场景下是必须的  Android使用GridView实现日历的简单功能  如何选择高效响应式自助建站源码系统?  高防服务器租用首荐平台,企业级优惠套餐快速部署  如何在服务器上三步完成建站并提升流量?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  建站主机选哪种环境更利于SEO优化?  制作证书网站有哪些,全国城建培训中心证书查询官网?  太原网站制作公司有哪些,网约车营运证查询官网?  兔展官网 在线制作,怎样制作微信请帖?  临沂网站制作企业,临沂第三中学官方网站?  b2c电商网站制作流程,b2c水平综合的电商平台?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  IOS倒计时设置UIButton标题title的抖动问题  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  实例解析angularjs的filter过滤器  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  如何在IIS中新建站点并解决端口绑定冲突?  建站之星上传入口如何快速找到?  如何制作一个表白网站视频,关于勇敢表白的小标题?  深圳网站制作案例,网页的相关名词有哪些?  股票网站制作软件,网上股票怎么开户?  高防服务器如何保障网站安全无虞?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  如何在Golang中引入测试模块_Golang测试包导入与使用实践 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。