当前位置:   article > 正文

ArrayList相关_arraylist 按index 和长度查

arraylist 按index 和长度查

1.底层实现:底层使用数据实现,Object[] elementData

2.特点:顺序排序,查询速度快,插入,删除速度慢(顺序删除速度慢,随机删除速度快)

3.查询原理:查询时,根据输入的index值进行快速定位查询

4.插入,删除原理:以新增为例,当在index位插入新的元素,ArrayList会复制index+1位后面的所有元素,然后将元素按顺序插入到index+1位后面,实现元素的插入,删除同理,即是覆盖操作,所以相对于LinkedList插入删除速度较慢。但是在随机插入时,则无需考虑这么多,所以速度略快

5.初始化:ArrayList初始化长度为10(),扩容机制是插入前进行判断,然后进行扩容,讲数组长度扩容为原来的1.5倍,然后将原数组复制到新数组再进行插入

tips:ArrayList虽然可以自定义初始化长度,但是初始化之后数组虽然存在,但是并没有长度,即长度初始化之后是0,此时如果按照index进行set操作,会出现数组越界报错,当第一个元素插入后,数组的长度才会变为初始化设置的值

6.安全问题:ArrayList虽然是不安全的,但是大部分时候我们在使用ArrayList时都是在单线程操作中,而且绝大部分操作都是查询操作,所以安全性的要求也并没有那么高。Vector是安全性的ArrayList,其操作就是在ArrayList的基础上在每个方法上都增加synchronized关键字,因为虽然安全,但是效率及其低下,所以建议使用Collections.synchronizedList对ArrayList进行安全性操作

Vector(很少使用)

1.底层:类数组实现

2.特点:加强版ArrayList,不过大小可以自由根据需求增大或减少

Collections.synchronizedList

1.使用方法:List<E> list = Collections.synchronizedList(new ArrayList<E>())

2.特点:在add()方法时默认添加了synchronized关键字,保证安全性能,数据添加时不会出现丢失问题,而遍历时需要手动增加synchronized关键字(迭代器操作)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/715658
推荐阅读
相关标签
  

闽ICP备14008679号