Java集合框架-ArrayList
来源:互联网 发布:算法导论26章思考题 编辑:程序博客网 时间:2024/05/17 07:06
1、对于集合而言,集合中存放的依然是对象的引用而不是对象本身。
如果增加的元素个数超过了10个,那么ArrayList底层会新生成一个数组,长度为原数组的1.5倍+1,然后将原数组的内容复制到新数组当中,并且后续增加的内容都会放到新数组当中。当新数组无法容纳增加的元素时,重复该过程。
对于ArrayList元素的删除操作,需要将被删除元素的后续元素向前移动,代价比较高。
集合当中只能放置对象的引用,无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合当中
集合当中放置的都是Object类型,因此取出来的也是Object类型,那么必须要使用强制类型转换将其转换为真正的类型(放置进去的类型)。
2、对于ArrayList实际上是一个什么东西呢?咱们不妨看看底层源代码的实现
public ArrayList(int initialCapacity) {super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity);this.elementData = new Object[initialCapacity]; } /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() {this(10); }总结:ArrayList底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象时,实际上会在底层生成一个长度为10的Object类型数组
3、如果此时向集合中加入元素时,当这个数组已经填满了,此时会怎样呢?
public boolean add(E e) {ensureCapacity(size + 1); // Increments modCount!!elementData[size++] = e;return true; }
public void ensureCapacity(int minCapacity) {modCount++;int oldCapacity = elementData.length;if (minCapacity > oldCapacity) { Object oldData[] = elementData; int newCapacity = (oldCapacity * 3)/2 + 1; if (newCapacity < minCapacity)newCapacity = minCapacity; // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity);} }总结:当我们向数组中加入元素时,第一步做的原来是容量的确认判断
如果增加的元素个数超过了10个,那么ArrayList底层会新生成一个数组,长度为原数组的1.5倍+1,然后将原数组的内容复制到新数组当中,并且后续增加的内容都会放到新数组当中。当新数组无法容纳增加的元素时,重复该过程。
4、对于删除操作,底层又是怎样执行的呢?
public E remove(int index) {RangeCheck(index);modCount++;E oldValue = (E) elementData[index];int numMoved = size - index - 1;if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved);elementData[--size] = null; // Let gc do its workreturn oldValue; }总结:
对于ArrayList元素的删除操作,需要将被删除元素的后续元素向前移动,代价比较高。
集合当中只能放置对象的引用,无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合当中
集合当中放置的都是Object类型,因此取出来的也是Object类型,那么必须要使用强制类型转换将其转换为真正的类型(放置进去的类型)。
阅读全文
0 0
- 《java集合框架---------ArrayList》
- Java 集合框架-ArrayList
- Java集合框架:ArrayList
- Java集合框架:ArrayList
- java 集合框架-ArrayList
- Java集合框架-ArrayList
- java集合框架-ArrayList
- Java集合框架:ArrayList
- Java集合框架--ArrayList
- java集合框架之ArrayList
- java集合框架系列---ArrayList
- Java集合框架之ArrayList
- 关键字: java 集合框架 collection, arraylist, hashmap
- Java集合框架源码分析之ArrayList
- java集合框架List之ArrayList(一)
- java集合框架List之ArrayList(二)
- java集合框架List之ArrayList(一) .
- java集合框架List之ArrayList(二) .
- vs2010的一个bug,需要sp1或者如下解决方式
- threadSynchronized
- HTTP与HTTPS的区别
- 邻接表的几种存储方式
- 套接字编程
- Java集合框架-ArrayList
- Http基础概念
- centos源码安装redis
- shell -- ch15呈现数据
- promise
- Android Studio -Fragment
- Linux基础指令
- Apache POI
- 图解https