ArrayList和LinkedList的底层源码之我见
来源:互联网 发布:芜湖一中王海飞 知乎 编辑:程序博客网 时间:2024/06/11 08:16
ArrayList集合,都是基于最基本的对数组的操作.(可以说数组是它的灵魂)
修饰符transient:不被序列化
实现IO的 序列化接口
判断索引是否越界异常,
判断容量是否足够,不够就将容量做位运算右移一位(1.5倍)在判断是否足够....(即扩容算法)
通过变量modCount,多线程访问避免抛出索引越界异常而是抛出并发修改异常
增删底层就是弄一个新的数组Arrays.copyof方法存入数据返回.......
底层都是基于最原始操作进行的.
数组
数组的底层又是怎么样的?,数组的底层可以说已经是内存级别的东西了,但是它与基本数据类型有有所不同,虚拟机对他有特殊的操作.对于基本数据类型可以说已经是'元数据'级别了,
数组只是在内存开辟了一个连续的空间用来存储基本数据类型的值和引用类型的地址值.
LinkedList集合 都是基于对链表类的操作(链表类是它的灵魂)
链表类:java.util.LinkedList.Node<E>
它是LinkedList类的内部类:
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;
}
}
从链表类的源码可以看出,它是极其简单的一个类:包括一个满参构造和三个字段,分别是:节点元素(就是我们存储的元素对象),上一个链表类地址,下一个链表类地址.
LinkedList集合操作都是基于对这个类的基本操作.
- ArrayList和LinkedList的底层源码之我见
- ArrayList和LinkedList底层实现的区别
- ArrayList和LinkedList底层实现的区别
- ArrayList和LinkedList底层实现的区别
- JDK源码解析之ArrayList和LinkedList
- Java基础之集合List-ArrayList、LinkedList、Vector的底层实现和区别
- arraylist arraylist使用实例 linkedlist linkedlist源码解析 linkedlist和arraylist的区别
- List-ArrayList、LinkedList、Vector的底层实现和区别
- ArrayList和LinkedList的源码分析
- ArrayList和LinkedList add的源码分析
- 数据结构之重写ArrayList的底层源码
- ArrayList和LinkedList底层实现与理解
- ArrayList和linkedList源码分析
- LinkedList和ArrayList源码对比
- ArrayList、Vector、LinkedList底层的一些不同
- ArrayList、LinkedList、HashMap的底层实现
- java源码分析之集合框架 ArrayList和LinkedList的区别05
- 从源码分析ArrayList和LinkedList的差别
- Shell脚本之8种字符串截取方法
- 使用Myeclipse创建Maven项目
- BZOJ 3629: [JLOI2014]聪明的燕姿
- java 位运算符详解 及 实例 ---与(&),或(|),非(~),异或(^)
- 树莓派opencv的安装
- ArrayList和LinkedList的底层源码之我见
- 进制转换(char和string转换int)
- 单点触控
- C++ 【对若干个区间进行合并】
- tomcat+nginx+redis实现均衡负载、session共享(一)
- LEETCODE 48 672. Bulb Switcher II
- Javaweb之EL表达式
- Windows程序设计-窗口和消息
- Android的Cursor的close方法不调用会不会造成内存泄露