Collections 之 Arraylist 源码解读 (五)
🍁 作者:知识浅谈,CSDN 博客专家,阿里云签约博主,InfoQ 签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM 算法
💒 公众号:知识浅谈
Collections 之 Arraylist 源码解读(五)总结
正菜来了⛳⛳⛳
🎈ArrayList 中相关方法函数解读
🍮lastIndexOf(Object o)
这个函数的含义是从底层数组后边向前查找,找到第一个对象等于 o 的位置并返回,如果没有就返回-1,更正式地说,返回满足 (o==null ? get(i)==null : o.equals(get(i))) 的最高索引 i,如果没有这样的索引,则返回 -1。
🍮clone()
这个函数的作用是新创建一个 ArrayList 数组,并把当前的 Arraylist 中的底层的数组进行拷贝一份,把新 ArrayList 的 elementData 指向新的创建的数组。
方法中调用的 Arrays.copyOf 是一种深拷贝的方法。
🍮get(int index)
这个最常见的方法,见名知意,返回对应索引位置的的元素,但是返回之前先检查索引是都超出了范围。
上边方法中调用了 rangeCheck(index)这个函数主要是判断 index 大于等于 size,会抛出 IndexOutOfBoundsException 索引溢出异常。
🍮E set(int index, E element)
同样这个也是见文知意,先进行检查,判断索引是否超出了 elementData 的容器的范围,如果没有超出,再在指定的位置上设置相应的元素,并把旧元素返回。
🍮add(E e)
这个函数的作用是在 ArrayList 列表中添加一个元素,但是添加元素之前需要做一些检查,如数组长度的大小能够添加元素的大小。
上边函数中调用的 ensureCapacityInternal 会先判断 elementData 数组是否为空,不为空返回 size+1 ,然后再判断 size+1 和 elementData 的数组的长度的大小,如果 elementData 较小的话,进行一个扩容。
🍮remove(int index)
这个函数的含义就是移除指定位置的元素,但是一处之前先判断索引是否合理,合理之后再把 index 后边的元素向前移动一位。
🍚总结
以上是关于 ArrayList 的列表的相关含义解读,希望有所帮助。
版权声明: 本文为 InfoQ 作者【知识浅谈】的原创文章。
原文链接:【http://xie.infoq.cn/article/9e3fa6f528dd3dfd50c5690c5】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论