佛山企业网站开发网站手机版方案
佛山企业网站开发,网站手机版方案,扬州建网站,北京新情况最新消息今天知识点
数组是一种用连续空间来存储相同数据类型的线性数据结构。
ArrayList 的底层是使用动态的数组实现的。
ArrayList 的初始化容量是0#xff0c;只有第一次添加的时候才会为10.
ArrayList 在进行扩容的时候都是上一次大小的1.5倍#xff0c;每次扩容都需要拷贝数组。…知识点
数组是一种用连续空间来存储相同数据类型的线性数据结构。
ArrayList 的底层是使用动态的数组实现的。
ArrayList 的初始化容量是0只有第一次添加的时候才会为10.
ArrayList 在进行扩容的时候都是上一次大小的1.5倍每次扩容都需要拷贝数组。
ArrayList 添加元素的步骤
确保数组的容量能够放下元素计算size 1 是否比当前数组的长度大是的话进行扩容将数组的 size 1 的下标指向需要添加的这个元素。 如何实现数组跟List之间的转换
数组转换为List 使用Arrays.asList();这个方法
List转换为数组 使用List.toArray(); 这个方法 使用Arrays.asList() 转换的List会受原先数组数据变动的影响。因为List的存储数据的数组指向了原先数组。
使用toArray() 转换的数组不会受原先List数据变动的影响。因为底层实现的原理是将List的数据拷贝到数组。 ArrayList 和 LinkedList 的区别
1、底层的实现
ArrayList 的底层是基于动态数组去实现的。
LinkedList 的底层是基于双向链表实现的。
2、操作数据的效率
底层数据结构
ArrayList的底层是使用动态数组实现的。
LimkedList的底层是使用双向链表实现的。 操作数据效率
ArrayList 可以使用下标进行查询数据LinkedList 不支持下标查询。查询未知下标ArrayList需要遍历链表也需要遍历时间复杂度都是O(n)新增跟删除ArrayList尾部增删时间复杂度都是O(1)。其他部分增删需要挪动数组时间复杂度是O(n)新增跟删除LinkedList 头尾部增删时间复杂度是O(1)其他部门都需要遍历数组时间复杂度是O(n) 内存空间占用
ArrayList的底层是使用数组实现的内存连续节省内存。
LinkedList的底层是使用双向链表实现的每个节点需要多俩个指针更占用内存。 线程安全
ArrayList 和 LinkedList 都是非线程安全的
能够实现线程安全的方案
1、尽量声明为局部变量
2、使用Collections.synchronizedList()底层是加锁相对应性能降低。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88849.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!