ArrayList类

说在前面

ArrayList是基于数组实现的,相对链表查找快、修改慢。
public class ArrayList< E >
extends AbstractList< E >
implements List< E >, RandomAccess, Cloneable, Serializable

属性

1. private static final long serialVersionUID = 8683452581122892189L;		:记录类的版本,确保类可以正确的序列化。
2. private static final int DEFAULT_CAPACITY = 10;		:默认的初始化容量。
3. private static final Object[] EMPTY_ELEMENTDATA = {};	
4. private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};	:据我看,这个属性和上面的属性提供了不同的扩容方案,为了提高性能。
5. transient Object[] elementData; 		:用来存储元素的数组。
6. private int size;		:ArrayList中元素数量。
7. protected int modCount  : 这个列表在结构上被修改的次数。继承自AbstractList。

构造函数

ArrayList() 			:默认的构造函数,此时用DEFAULTCAPACITY_EMPTY_ELEMENTDATA赋给elementData
ArrayList(Collection<? extends E> c) 	:将一个Collection初始化为一个ArrayList。长度为0时,用EMPTY_ELEMENTDATA 赋给elementData
ArrayList(int initialCapacity) 		:开辟给定大小的容量;当initialCapacity 等于0 时用EMPTY_ELEMENTDATA 赋给elementData

其他方法

1. boolean add(E e)  	:将元素e添加在所有元素的末尾,如果当前容量已满就会自动扩容1.5倍。添加成功返回true2. void add(int index, E element)  	:将element元素加在下标为index的位置,原index及以后位置的元素同一向后移一位。如果当前容量已满就会自动扩容当前容量的1.5倍。
3. boolean addAll(Collection<? extends E> c)  	:将c中的元素追加到ArrayList的尾部,c长度为0返回false4. boolean addAll(int index, Collection<? extends E> c)  	:将c中的元素加在index位置,原index及以后位置的元素同一向后移。
5. void clear()  		:删除ArrayList的所有元素。
6. Object clone()  		:该ArrayList实例的克隆
7. boolean contains(Object o)  	:判断ArrayList中是否有o元素。使用indexOf实现。
8. void ensureCapacity(int minCapacity)		:修改当前容量为你指定的容量(minCapacity),但是你的指定必须大于实际容量。  
9. void forEach(Consumer<? super E> action)  	:使每个元素执行action的aaccept方法。	
10. E get(int index)  		:返回下标为index的元素,(即第index + 1个元素)
11. int indexOf(Object o)  	:返回找到的第一个o元素的下标,没找到返回-1
12. boolean isEmpty()  		:判断ArrayList是否为空。
13. Iterator<E> iterator()  	:返回一个迭代器
14. int lastIndexOf(Object o)  		:返回最后一个o元素的下标,没找到返回-1
15. ListIterator<E> listIterator()  	:返回一个从0下标开始的迭代器。
16. ListIterator<E> listIterator(int index)  	:返回一个从index下标开始的迭代器。
17. E remove(int index)  	:删除对应下标的元素,下标后的元素往前补,返回所删除的元素。
18. boolean remove(Object o)  		:删除指定的元素。删除成功返回true,没有找到返回flase。
19. boolean removeAll(Collection<?> c)  	:删除ArrayList和c中的相同元素。源码值得看。
20. boolean removeIf(Predicate<? super E> filter)  	:方法用于删除所有满足特定条件的数组元素。
21. protected void removeRange(int fromIndex, int toIndex)  	:删除从fromIndex到toIndex的元素,删除后后面元素往前补,补齐后多余内容赋为null。
22. void replaceAll(UnaryOperator<E> operator)  :用于将给定的操作内容替换掉数组中每一个元素。
23. boolean retainAll(Collection<?> c)  	:保留c中的元素,删除除c中的共同元素以外的所有元素。
24. E set(int index, E element)  	:将下标为index的元素设置为element,并且返回旧的元素。
25. int size()  	:返回ArrayList的元素个数。
26. void sort(Comparator<? super E> c)  	:使用实现了Comparator接口的类c对ArrayList进行排序。
27. Spliterator<E> spliterator()  :新版迭代器。详情自行百度
28. List<E> subList(int fromIndex, int toIndex)  	:返回一个SubList,继承了AbstractList,实现了RandomAccess
29. Object[] toArray()  	:一个按正确顺序包含列表中所有元素的数组。
30. <T> T[] toArray(T[] a)  		:将ArrayList转为T类型并赋给a数组。如果a的长度小,就会对ArrayList截断;如果ArrayList的size小,将ArrayList赋值给a后,在a的下标为size的位置赋上null。
31. void trimToSize() 	:将这个ArrayList实例的容量调整为列表的当前大小。 

T[] toArray(T[] a) 函数

	public static void main(String[] args) {
        ArrayList<Integer> arr = new ArrayList<>(12);
        arr.add((Integer) 12);arr.add((Integer) 13);
        //Number[] IntArr = new Number[]{1,2,3,4};  yes!  只要是可互转类型就行
        Integer[] IntArr = new Integer[]{1,2,3,4};
        System.out.println(Arrays.toString(arr.toArray(IntArr)));
    }
   
/*
运行结果:
[12, 13, null, 4]
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脸是真的白

如果对你有用的话,可以支持一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值