LinkedList 的创建与使用
1.LinkedList 的创建
//创建一个 LinkedList 链表结构LinkedList list = new LinkedList();
2.LinkedList 的添加操作
//追加尾部list.add("java01");//添加到头部list.addFirst("java02"); //添加到尾部list.addLast("java03");//添加到指定下标list.add(2,19);
3.LinkedList 的删除操作
//删除指定元素list.remove("java");//删除下表为1处的元素list.remove(1);//删除头部元素list.removeFirst();//删除尾部元素list.removeLast();
4.LinkedList 的修改操作
· //将下标为1的元素修改为100list.set(1,100);System.out.println(list);
5.LinkedList 的查询操作
//获取链表长度int size = list.size();System.out.println(size);//判断链表是否为空boolean empty = list.isEmpty();System.out.println(empty);//判断是否有指定元素boolean b = list.contains("java01");System.out.println(b);//获取指定下标的元素Object o = list.get(1);System.out.println(o);//获取第一个元素Object first = list.getFirst()System.out.println(first);//获取最最后一个元素Object last = list.getLast();System.out.println(last);
6.LinkedList 的底层代码
1.凡是查询源码 ,我们都是从类的构造方法入手:/*** Constructs an empty list.*/public LinkedList() {}该类的构造方法内是空的,没有任何的代码。 但是该类中有三个属性。 transient int size = 0; //索引transient Node<E> first; //第一个元素对象 transient Node<E> last; //表示最后一个元素对象。================ add的源码=====E:理解为Object类型==========================。public boolean add(E e) {linkLast(e);return true;}void linkLast(E e) {final Node<E> l = last;//上一个节点 数据 下一个节点final Node<E> newNode = new Node<>(l, e, null);last = newNode;if (l == null)first = newNode;elsel.next = newNode;size++;modCount++;}==================Node的源码 内部类======================================= private static class Node<E> { //<E>泛型--objectE 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;}}1、==================== get(1)-----获取元素========================public E get(int index) {checkElementIndex(index); //检查index下标是否正确。return node(index).item; //李四Node对象}========================node(index)=============================Node<E> node(int index) {//>> 位运算二进制运算 ----- size >> 1 一半的意思size/2if (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;}}
LinkedList 的创建与使用相关推荐
- 【Groovy】集合声明与访问 ( 使用 [] 创建 ArrayList 和 LinkedList 集合 | 集合赋初值 | 使用下标访问集合 | 使用 IntRange 作为下标访问集合 )
文章目录 一.使用 [] 创建集合 1.使用 [] 创建 ArrayList 集合 2.使用 [] 创建 LinkedList 集合 二.访问集合中的元素 1.集合赋初值 2.使用下标访问集合元素 ( ...
- ArrayList和LinkedList类的用法及区别
List 是一个有序.可重复的集合,集合中每个元素都有其对应的顺序索引.List 集合允许使用重复元素,可以通过索引来访问指定位置的集合元素.List 集合默认按元素的添加顺序设置元素的索引,第一个添 ...
- 第1关:学习-Java集合类之List的LinkedList之特有方法的使用
任务描述 相关知识 什么是 LinkedList集合 创建 LinkedList 集合 LinkedList 集合的方法 编程要求 测试说明 任务描述 本关任务:替换 LinkedList 集合中的首 ...
- PHP数据结构之——链表
链表是一种在逻辑上连续.有序的数据存储结构(在物理存储单元上非连续非有序).在我大学的时候,学习C++的数据结构课程时,最先接触的就是链表(大学是学渣别喷...) 那么链表是怎样的一种结构呢? 用&q ...
- 《JAVA程序设计》第八周学习总结
教材学习内容总结 第十五章 泛型与集合框架 泛型 1.泛型类声明: class People<E> 其中People是泛型类的名称,E是其中的泛型 2.泛型的重要目的是可以建立具有类型安全 ...
- 剑指Offer——Java答案
第二章 面试需要的基础知识 数组 - 二维数组中查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数, ...
- 20165320 第十周课上测试补做
相关知识点总结: 1.LinkedList泛型类创建一个链表对象 LinkedList<String> mylist = new LinkedList<String>(); 2 ...
- java面试题大合集(开发者必看三)
前言 本文来自百度网络的一篇文章,由于没有答案,现在整理了一些比较好的回答和好的博客,可以自己扩展思路,如果大家有一下面试题的更好的答案,欢迎在评论区留言.以上全部来自网络!此外,我的微信公众号将每日 ...
- [转载]Java-集合框架完全解析
在简书上看到一篇介绍Java集合框架的文章,写得挺详细的,http://www.jianshu.com/p/63e76826e852这是原文地址. 数据结构是以某种形式将数据组织在一起的集合,它不仅存 ...
最新文章
- 本科生如何自学机器学习?
- 终于知道如何才能取得HtmlEditor里的数据了
- 查询已有链表的hashmap_源码分析系列1:HashMap源码分析(基于JDK1.8)
- 如果拿到私钥的话,https会被攻击吗?
- 变量定义和声明的区别~~~概念上千万不要栽跟头!!!
- springmvc配置MappingJackson2HttpMessageConverter实现属性驼峰和下划线的转换
- 35岁的程序员,真的要转管理吗?
- 安卓手机上跑_第一名易主?看看安兔兔公布的二月份安卓手机性能跑分排行
- Android dalvik GC相关的属性详解
- C# 报错 provisional headers are shown learn more
- 这一年,我所阐释的Linux哲学
- 什么是App分发?有哪些分发平台可以选择?
- makefile编写总结
- 计算机建立excel文件,我的电脑不能新建excel!电脑excle无法使用
- LeetCode 到底怎么刷?GitHub 上多位大厂程序员亲测的高效刷题方式
- 汉寿计算机职业中专,汉寿县职业中等专业学校2021年有哪些专业
- Linux模拟实现僵尸进程
- 什么是IssS,PaaS和SaaS及其区别
- Spring的IOC原理以及思维导图
- go-cqhttp权限管理
热门文章
- 读取项目的根目录 部署tomcat后_tomcat配置根目录访问后,部署后第一次访问会出现tomcat的默认界面而非项目首页...
- 简单理解 word-wrap、word-break 和 white-space 的区别
- win8.1cmd常用命令提示符
- 五个好评不断的资源网站 绝对不能错过
- 【hardhat框架使用与常见编译部署的问题】
- “长光卫星”已完成2.5亿元天使轮融资,已是全国规模最大的民营商业卫星公司... 1
- 【双足机器人(1)】线性倒立摆及其运动控制(附代码)
- arduino(9):使用ESP8266,连接到RFID RC522 设备上,读取门禁卡上的设备信息
- 计算机主机跳线连接图片,电脑主板跳线怎么接 电脑主板跳线接法【图文】
- VLAN与单臂路由配置