美文网首页
ArrayList总结

ArrayList总结

作者: ZalleDay | 来源:发表于2018-12-08 22:12 被阅读0次

首先,我们要知道Java 集合主要分为两个派系,一个是 Collection 系列,一个是 Map 系列。

我们今天的主角是ArrayList,它属于Collection。

使用idea的话,使用F4就可以看到源代码

public class ArrayListextends AbstractList

implements List, RandomAccess, Cloneable, java.io.Serializable

{

private static final long serialVersionUID =8683452581122892189L;

/**

* Default initial capacity.初始化为的容量为10

*/

    private static final int DEFAULT_CAPACITY =10;

/**

* 这个是动态数组

*/

    transient Object[]elementData;// non-private to simplify nested class access

我们这里讲解这个常用的方法

/**

* Returns the element at the specified position in this list.

*

* @param  index index of the element to return

* @return the element at the specified position in this list

* @throws IndexOutOfBoundsException {@inheritDoc}

*/

public E get(int index) {

Objects.checkIndex(index,size);

return elementData(index);

}

这说明的get方法会对范围的合法性进行检查

    public E set(int index,E element) {

Objects.checkIndex(index,size);

E oldValue = elementData(index);

elementData[index] = element;

return oldValue;

}

set方法也是如此,set方法和get方法一样,必须要对ArrayList里面已经有的元素才能操作,不然会报IndexOutOfBoundsException错误

当时小编就遇到了相关问题...

遇到一篇好博文

http://www.cnblogs.com/java-zhao/p/5102342.html

附上他所提示的重难点:

ArrayList基于数组方式实现,无容量的限制(会扩容)

添加元素时可能要扩容(所以最好预判一下),删除元素时不会减少容量(若希望减少容量,trimToSize()),删除元素时,将删除掉的位置元素置为null,下次gc就会回收这些元素所占的内存空间。

线程不安全

add(int index, E element):添加元素到数组中指定位置的时候,需要将该位置及其后边所有的元素都整块向后复制一位

get(int index):获取指定位置上的元素时,可以通过索引直接获取(O(1))

remove(Object o)需要遍历数组

remove(int index)不需要遍历数组,只需判断index是否符合条件即可,效率比remove(Object o)高

contains(E)需要遍历数组

相关文章

  • ArrayList源码解析

    1、本文主要内容 ArrayList源码简介 ArrayList源码剖析 总结 之前总结过HashMap和Link...

  • Java集合框架——ArrayList源码

    本文通过源码来总结一下ArrayList ArrayList ArrayList 底层上是一个动态数组 属性 可以...

  • Android:集合总结

    集合总结 ArrayList和LinkedList区别 ArrayList是动态数组,而Linklist是链表。A...

  • java list

    下面对arraylist、linkedlist做下总结arraylist:insert:插入到最后和中间,如果不涉...

  • ArrayList总结

    首先,我们要知道Java 集合主要分为两个派系,一个是 Collection 系列,一个是 Map 系列。 我们今...

  • ArrayList总结

    上一篇文章我们总结了ArrayList的源码特点,这里我们总结一下List的特点 1.List的基础 实现了Col...

  • ArrayList源码解读

    ArrayList特点总结 ArrayList实现List接口,底层是使用数组实现的,可以根据元素的个数进行动态扩...

  • 11.并发容器类二

    List ArrayList 总结:arraylist并发不安全,底层是数组,遍历同时删除,会导致异常;可通过Co...

  • java中arraylist的底层实现

    参考:java集合--arraylist的实现原理 详细的请参考上文,以下是我的简单总结:1.arraylist不...

  • Java ArrayList扩容简介

    今天抽空看了一下ArrayList的源码,了解一下扩容机制,将研究过程总结如下. ArrayList 简介 Arr...

网友评论

      本文标题:ArrayList总结

      本文链接:https://www.haomeiwen.com/subject/xrychqtx.html