javase基础回顾(二)LinkedList需要注意的知识点 阅读源码收获

我们在学习这一块内容时需要注意的一个问题是 集合中存放的依然是对象的引用而不是对象本身。

List接口扩展了Collection并声明存储一系列元素的类集的特性。使用一个基于零的下标,元素可以通过它们在列表中的位置被插入和访问。一个列表可以包含重复元素。List在集合中是一个比较重要的知识点也是在开发中最常用的。

LinkedList 的底层实现是用双链表实现的

当执行插入或者删除操作时用LinkedList比较好,这和底层实现有关,因为他是用双链表实现的当执行插入或是删除或是增加操作时链表其余的对象并没有发生位置上的改变,因为改变的只是与之相关的引用,链表里的对象在内存上的位置也可能根本就没有挨着。

LinkedList的工作原理

linkedlist里存放的并不是对象本身而是对象的引用在源代码中有Entry这个内部类,这个Entry内部类里有前趋 后记等属性,存放的对象的引用就是作为Entry对象的属性存放在Entry对象里。(JDK1.6中是这样)在JDK1.8中还是用的这样的方式,也是用一个内部类作为链表中的一个个容器,但是不再叫Entry了,而是叫Node。

 1     private static class Node<E> {
 2         E item;
 3         Node<E> next;
 4         Node<E> prev;
 5
 6         Node(Node<E> prev, E element, Node<E> next) {
 7             this.item = element;
 8             this.next = next;
 9             this.prev = prev;
10         }
11     }
时间: 2025-01-15 15:30:12

javase基础回顾(二)LinkedList需要注意的知识点 阅读源码收获的相关文章

JavaSe基础回顾(一)

JavaSe基础知识点总结 1.变量 变量是内存中用来存放特定数据类型数据的一块内存空间,它的值是可以改变的.Java中的变量有四个基本属性:变量名,数据类型,存储单元和变量值 变量名:合法的标识符 变量的数据类型:可以是基本类型和引用类型(必须包含类型) 存储单元:存储单元大小是由数据类型决定的,如:int 为4个字节32位 变量值:在存储单元中存放的值 变量的声明格式: 类型 变量名: 2.运算符 运算符种类                       符号 赋值运算符           

JavaSE基础笔记二

第二章 基本语法 一.关键字&标识符 关键字:被java语言赋予了特殊含义,用做专门用途的字符串(单词) 保留字: 标识符:java对各种变量.方法和类等要素命名是使用的字符序列,即凡可以自己命名的地方都叫标识符 命名规则:(一定要遵守,否则会报编译异常) 由26个英文字母大小写,0-9,_或$组成 数字不可以开头 不可以使用关键字和保留字,但是能包含关键字和保留字. java严格区分大小写,长度无限制. 标识符不能包含空格. java中的命名规范:(不遵守也不会出异常) 包名:多单词组成时所有

ESA2GJK1DH1K基础篇: STM32+Wi-Fi(AT指令版)实现MQTT源码讲解

前言 该程序需要的基础知识:  https://www.cnblogs.com/yangfengwu/category/1566194.html   所有源码开源,请自行学习 打开第一节的源码 为了方便修改,我用数组存储了些参数 然后看链接MQTT部分 说个地方 然后看 判断连接状态 接着看订阅 判断订阅是否成功 发送一条上线消息 连接MQTT部分就结束了,然后就到了主循环了 一,配网 二,处理接收的数据 三,每隔一段时间采集发送温湿度数据 看下我的心跳包处理 说下我的处理思路 首先,如果到了发

Android基础学习—下载并在Eclipse中关联Android源码

1.下载源码 这部分网上有大量的资料,我就不重新写了,这是我参考的文章:<Windows平台下Android源码的下载> 一般来说,跟着上面文章的讲解操作就行了.不过我RP不佳,中途遇到了一个小问题:安装完Msysgit后在文件夹上右键没有git bash的选项,怎么办呢? 我的解决方案:直接在开始菜单找到git bash运行,使用"cd 目标目录路径"的命令进入你要存放源码的目录即可.当然也可以用git GUI可视化操作,不过反正只是下个源码,用command更方便,不是

javase基础回顾(一)ArrayList深入解析 解读ArrayList源代码(JDK1.8.0_92)

我们在学习这一块内容时需要注意的一个问题是 集合中存放的依然是对象的引用而不是对象本身. List接口扩展了Collection并声明存储一系列元素的类集的特性.使用一个基于零的下标,元素可以通过它们在列表中的位置被插入和访问.一个列表可以包含重复元素.List在集合中是一个比较重要的知识点也是在开发中最常用的. 我们都知道ArrayList是由数组实现的,但是和数组有很大区别的是随着向ArrayList中不断添加元素,其容量也自动增长,而数组声明好之后其容量就不会改变.想要探明其中的究竟探析其

JavaSE基础(二)--Java环境配置

Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境. Windows 上安装开发环境 Linux 上安装开发环境 安装 Eclipse 运行 Java window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html,点击如下下载按钮: 在下载页面中你需要选择接受许可,并根据自己的系统选择对应的版本,本文以 Wi

javase基础(二)

1.算术运算符 7种:+,-,*,/,%,++,--;          --------------------注意不要想当然,按照类型规则来计算 ++在变量前,先加1再取变量使用 --同理 在变量后,先取变量使用再加1 i=i++;//值不变     i=++i;//值加1 2.比较运算符 6种:>,<,>=,<=,==,!=    ------- 返回true|false表示逻辑值 3.逻辑运算符 5种:!,|,&,||,&& 短路与非短路的区别: 短

java基础回顾(二)——HashMap与HashTable

1 public class Hashtable 2 extends Dictionary 3 implements Map, Cloneable, java.io.Serializable 1 public class HashMap 2 extends AbstractMap 3 implements Map, Cloneable, Serializable HashTable 注意1 方法是同步的注意2 方法不允许value==null注意3 方法调用了key的hashCode方法,如果k

Java Concurrency(二)——J.U.C atomic包源码解读

java5之后的java.util.concurrent包(J.U.C)是世界级并发大师Doug Lea的作品,里面主要实现了 atomic包里Integer/Long对应的原子类,主要基于CAS: 一些同步子,包括Lock,CountDownLatch,Semaphore,FutureTask等,这些都是基于AbstractQueuedSynchronizer类: 关于线程执行的Executors类等: 一些并发的集合类,比如ConcurrentHashMap,ConcurrentLinked