mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-20 22:17:09 +08:00
在grow()中,对hugeCapacity()方法的解释错误
This commit is contained in:
parent
44accccc8c
commit
aca7d24da9
@ -19,15 +19,15 @@
|
|||||||
它继承于 **AbstractList**,实现了 **List**, **RandomAccess**, **Cloneable**, **java.io.Serializable** 这些接口。
|
它继承于 **AbstractList**,实现了 **List**, **RandomAccess**, **Cloneable**, **java.io.Serializable** 这些接口。
|
||||||
|
|
||||||
在我们学数据结构的时候就知道了线性表的顺序存储,插入删除元素的时间复杂度为**O(n)**,求表长以及增加元素,取第 i 元素的时间复杂度为**O(1)**
|
在我们学数据结构的时候就知道了线性表的顺序存储,插入删除元素的时间复杂度为**O(n)**,求表长以及增加元素,取第 i 元素的时间复杂度为**O(1)**
|
||||||
|
|
||||||
ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。
|
ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。
|
||||||
|
|
||||||
ArrayList 实现了**RandomAccess 接口**,即提供了随机访问功能。RandomAccess 是 Java 中用来被 List 实现,为 List 提供**快速访问功能**的。在 ArrayList 中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。
|
ArrayList 实现了**RandomAccess 接口**,即提供了随机访问功能。RandomAccess 是 Java 中用来被 List 实现,为 List 提供**快速访问功能**的。在 ArrayList 中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。
|
||||||
|
|
||||||
ArrayList 实现了**Cloneable 接口**,即覆盖了函数 clone(),**能被克隆**。
|
ArrayList 实现了**Cloneable 接口**,即覆盖了函数 clone(),**能被克隆**。
|
||||||
|
|
||||||
ArrayList 实现**java.io.Serializable 接口**,这意味着ArrayList**支持序列化**,**能通过序列化去传输**。
|
ArrayList 实现**java.io.Serializable 接口**,这意味着ArrayList**支持序列化**,**能通过序列化去传输**。
|
||||||
|
|
||||||
和 Vector 不同,**ArrayList 中的操作不是线程安全的**!所以,建议在单线程中才使用 ArrayList,而在多线程中可以选择 Vector 或者 CopyOnWriteArrayList。
|
和 Vector 不同,**ArrayList 中的操作不是线程安全的**!所以,建议在单线程中才使用 ArrayList,而在多线程中可以选择 Vector 或者 CopyOnWriteArrayList。
|
||||||
### ArrayList核心源码
|
### ArrayList核心源码
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ public class ArrayList<E> extends AbstractList<E>
|
|||||||
newCapacity = minCapacity;
|
newCapacity = minCapacity;
|
||||||
//再检查新容量是否超出了ArrayList所定义的最大容量,
|
//再检查新容量是否超出了ArrayList所定义的最大容量,
|
||||||
//若超出了,则调用hugeCapacity()来比较minCapacity和 MAX_ARRAY_SIZE,
|
//若超出了,则调用hugeCapacity()来比较minCapacity和 MAX_ARRAY_SIZE,
|
||||||
//如果minCapacity大于最大容量,则新容量则为ArrayList定义的最大容量,否则,新容量大小则为 minCapacity。
|
//如果minCapacity大于MAX_ARRAY_SIZE,则新容量则为Interger.MAX_VALUE,否则,新容量大小则为 MAX_ARRAY_SIZE。
|
||||||
if (newCapacity - MAX_ARRAY_SIZE > 0)
|
if (newCapacity - MAX_ARRAY_SIZE > 0)
|
||||||
newCapacity = hugeCapacity(minCapacity);
|
newCapacity = hugeCapacity(minCapacity);
|
||||||
// minCapacity is usually close to size, so this is a win:
|
// minCapacity is usually close to size, so this is a win:
|
||||||
@ -653,14 +653,14 @@ public class ArrayList<E> extends AbstractList<E>
|
|||||||
|
|
||||||
3. .java 中的**size()方法**是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!
|
3. .java 中的**size()方法**是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!
|
||||||
|
|
||||||
|
|
||||||
#### 内部类
|
#### 内部类
|
||||||
```java
|
```java
|
||||||
(1)private class Itr implements Iterator<E>
|
(1)private class Itr implements Iterator<E>
|
||||||
(2)private class ListItr extends Itr implements ListIterator<E>
|
(2)private class ListItr extends Itr implements ListIterator<E>
|
||||||
(3)private class SubList extends AbstractList<E> implements RandomAccess
|
(3)private class SubList extends AbstractList<E> implements RandomAccess
|
||||||
(4)static final class ArrayListSpliterator<E> implements Spliterator<E>
|
(4)static final class ArrayListSpliterator<E> implements Spliterator<E>
|
||||||
```
|
```
|
||||||
ArrayList有四个内部类,其中的**Itr是实现了Iterator接口**,同时重写了里面的**hasNext()**,**next()**,**remove()**等方法;其中的**ListItr**继承**Itr**,实现了**ListIterator接口**,同时重写了**hasPrevious()**,**nextIndex()**,**previousIndex()**,**previous()**,**set(E e)**,**add(E e)**等方法,所以这也可以看出了**Iterator和ListIterator的区别:**ListIterator在Iterator的基础上增加了添加对象,修改对象,逆向遍历等方法,这些是Iterator不能实现的。
|
ArrayList有四个内部类,其中的**Itr是实现了Iterator接口**,同时重写了里面的**hasNext()**,**next()**,**remove()**等方法;其中的**ListItr**继承**Itr**,实现了**ListIterator接口**,同时重写了**hasPrevious()**,**nextIndex()**,**previousIndex()**,**previous()**,**set(E e)**,**add(E e)**等方法,所以这也可以看出了**Iterator和ListIterator的区别:**ListIterator在Iterator的基础上增加了添加对象,修改对象,逆向遍历等方法,这些是Iterator不能实现的。
|
||||||
### <font face="楷体" id="6"> ArrayList经典Demo</font>
|
### <font face="楷体" id="6"> ArrayList经典Demo</font>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user