Java学习笔记之ArrayList

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangshuaionline/article/details/85288229

ArrayList实现了List接口

1. 构造方法

public ArrayList() {
    this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}

2. 私有变量DEFAULTCAPACITY_EMPTY_ELEMENTDATA

private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};

由此可见,ArrayList实际就是一个动态数组,那么ArrayList就有动态数组的所有特性。

3. add()

add方法主要实现了两个功能,一个是动态数组扩容size+1,一个是elementData[size++] = e;

4. remove()

remove方法,for循环遍历数组,找到要remove的数据,调用System.arraycopy方法,把需要删除的数据后面的所有数据向前挪动一个位置,并把数组中最后一个对象置为null(交给GC处理),size-1,并返回true,表示处理完毕,否则返回false。

5. addAll()

addAll方法是把传过来的集合整体添加到当前集合的末尾(如指定位置,则是插入该位置,该位置原数据向后移动)

6. clear()

	for (int i = 0; i < size; i++)		    
		elementData[i] = null;
	size = 0;

所有数据置为null,并把size修改为0

7. clone()

ArrayList<?> v = (ArrayList<?>) super.clone();
v.elementData = Arrays.copyOf(elementData, size);
v.modCount = 0;
return v;

克隆当前ArrayList,之前有过这种需求,自己还是重新组合的,以后也可以调用Arrays.copyOf方法了

8. contains()、indexOf()

该方法中遍历整个数组,并调用equals方法来进行比较,如果有相等的,返回下标,如果没有相等的,返回-1

9. ensureCapacity()

增加容量到指定大小

10. get()

返回数组指定位置的对象

11. isEmpty()

public boolean isEmpty() {
    return size == 0;
}

如果数组的大小为0,返回true,其他情况都是false

扫描二维码关注公众号,回复: 4754946 查看本文章

12. iterator()

public Iterator<E> iterator() {
   return new Itr();
}

该方法返回了一个Iterator对象,

13. lastIndexOf()

从数组最后一个元素开始向前遍历,返回第一个出现的索引,如果没有返回-1

14. listIterator()

public ListIterator<E> listIterator() {
   return new ListItr(0);
}

返回对应ListItr对象,默认为0

15. retainAll()

删除指定集合外的所有数据,此方法的实现方法为:首先遍历整个数组,把包含的数组放在前面,每次放置记录次数w,并在最后把w之后的所有数据置为null(GC),如果调整后数组长度没有变,则返回false,如果调整之后数组长度发生了改变,返回true。

16. set()

修改指定位置的对象,并返回修改前的对象

17. subList()

返回指定范围的数据,并保持和原数据的关联性。调用此方法并不会影响原数据大小。

18. toArray()

把该集合转化为数组对象。

19. trimToSize()

如果size和elementData.length不同的时候,根据size调整elementData

猜你喜欢

转载自blog.csdn.net/yangshuaionline/article/details/85288229