java--集合--ArrayList源码分析
2021/6/11 22:26:15
本文主要是介绍java--集合--ArrayList源码分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
-
ArrayList注意事项(可以放入null,且可以多个null)
-
package com.model.list; import java.util.ArrayList; import java.util.List; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/6/11 16:39 */ public class ListDemo05 { public static void main(String[] args) { /** * //ArrayList可以放空值且可以放多个空值,有序可重复,有数组实现存储,线程不安全,效率高 * public boolean add(E e) { * ensureCapacityInternal(size + 1); // Increments modCount!! * elementData[size++] = e; * return true; * } * ArrayList线程不安全的,源码中没有synchronized * * */ List<Object> list = new ArrayList<>(); list.add(null); list.add("张紫韩"); list.add(null); for (Object s:list){ System.out.println(s); } } }
- ArrayList源码分析
- 扩容机制
-
执行步骤(源码跟踪):
-
无参构造器创建ArrayList对象(new ArrayList<>())
-
执行添加数据: (list.add( i ))
-
将 int 类型的 i转换成 包装类型的 Integer类型的
-
判断空间是否足够,确定是否要扩容
-
执行操作
-
package com.model.arraylist; import com.sun.xml.internal.ws.util.StreamUtils; import java.util.ArrayList; import java.util.List; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/6/11 16:49 */ public class ArrayListDemo01 { /** * 注意:idea在debug模式中,会将数据进行简化,我们看到数据是不完整的,(如arraylist扩容后,扩容的空间在没有数据是,默认是null,但是又是我们会看不到扩容后的数据) * 这就是因为idea将我们的数据进行了简化我们不能看到null, * 问题解决: * * */ public static void main(String[] args) { //案例分析 // 使用无参构造器创建ArrayList对象,底层为 Object[]类型的数组elementData ArrayList<Object> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { list.add(i); } for (int i = 10; i < 15; i++) { list.add(i); } list.add(100); list.add(200); list.add(null); } }
-
- 有参构造创建指定大小的ArrayList对象
-
package com.model.arraylist; import java.util.ArrayList; import java.util.List; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/6/11 20:44 */ public class ArrayListDemo02 { public static void main(String[] args) { List<Object> list = new ArrayList<>(8); for (int i = 0; i < 8; i++) { list.add(i); } for (int i = 8; i < 12; i++) { list.add(i); } list.add(100); list.add(200); list.add(true); } }
-
-
附加:
-
* 注意:idea在debug模式中,会将数据进行简化,我们看到数据是不完整的,(如arraylist扩容后,扩容的空间在没有数据是,默认是null,但是又是我们会看不到扩容后的数据) * 这就是因为idea将我们的数据进行了简化我们不能看到null, * 问题解决
-
iea的debug模式中设置显示Arraylist中的null完整查看初始数组大小,扩容过程
-
-
- 扩容机制
这篇关于java--集合--ArrayList源码分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Java语音识别项目资料:新手入门教程
- 2024-11-26JAVA语音识别项目资料:新手入门教程
- 2024-11-26Java语音识别项目资料:入门与实践指南
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料:新手入门教程
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解
- 2024-11-25Java对接阿里云智能语音服务资料详解