1.ArrayList 容器初始大小为10,使用object数组实现。
2.ArrayList 在扩容、增加元素和删除元素的时候,使用的是数组的深克隆。
3.ArrayList 的add()方法:
public boolean add(E e) {
ensureCapacity(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
ArrayList的ensureCapacity方法:
public void ensureCapacity(int minCapacity) {
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
Object oldData[] = elementData;
int newCapacity = (oldCapacity * 3)/2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
ArrayList进行扩容的时候并不是2倍的扩容,而是使用(Oldsize* 3)/2 + 1的方式。
插入数组的时候,再已有值的最后插入。
ArrayList的remove方法:
public E remove(int index) {
RangeCheck(index);
modCount++;
E oldValue = (E) elementData[index];
int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null; // Let gc do its work
return oldValue;
}
ArrayList在删除元素的时候,会把需要删除元素后面的所有元素都往前移动一位,然后设置list最后一个元素为空,让虚拟机回收该块内存。
分享到:
相关推荐
"java需要关注的知识点---好的书本"这一主题暗示了我们需要关注那些能帮助我们深入理解Java语言的资源。其中,标签"源码"和"工具"提醒我们不仅要关注理论,还要关注实际应用和开发工具。 首先,学习Java源码是理解...
通过上述知识点的阐述,可以了解到ArrayList在Java集合框架中的重要性以及其内部机制。熟练掌握ArrayList的使用将大大提高Java开发的效率和代码质量。在实际开发中,还需要结合具体的业务场景和性能要求,合理选择...
下面将详细介绍Java语言的核心概念和关键知识点。 1. **Java语法基础**: - **变量**:在Java中,变量是存储数据的容器,分为基本类型(如int, double, boolean等)和引用类型(如类、接口、数组)。 - **数据...
【归纳总结shi.doc】可能是对一段时间内学习内容的提炼,包含了关键知识点的梳理,比如类与对象的区别、封装、继承和多态性这面向对象的三大特性,以及异常处理机制和Java内存管理的基本原理,如垃圾回收机制。...
这个实验涵盖了从基础到高级的多个Java知识点,旨在提升对Java语言的理解和应用能力。 首先,让我们关注"JavaCodeAnalyzer.jar"这个文件。这很可能是一个用于分析Java源代码的工具或者库。Java代码分析器通常用于...
下面我们将深入探讨ArrayList的相关知识点。 1. **ArrayList的构造** ArrayList在初始化时,可以通过不带参数的构造器创建一个空的列表,或者指定初始容量的构造器来避免频繁的容量扩展。例如: ```java ...
这份“java综合知识点总结-必背.zip”文件很可能是为了帮助Java学习者或开发者整理和回顾核心概念,以便深入理解和应用。以下是根据标题和描述可能包含的一些关键知识点的详细解释: 1. **基础语法**: - 变量:...
Java 知识点 手写 ArrayList Java 中最常用的类是 ArrayList,它的实现原理和方法非常重要。在面试中,经常要求手写一个 ArrayList,以考察应聘者对 ArrayList 的熟悉程度。本文将详细介绍如何手写一个 ArrayList,...
图文并茂,能让大家很好的理解java中这个重要的知识点。 此文档需要wps或者office软件来查看,如果你没有此软件,到http://www.wps.com.cn 下载wps即可查看此文档。 注:本人所有资源都是共享的,的资源分都是0!
这份"java面试java_interview_guide-master.zip"资源显然是为准备Java面试而设计的,包含了丰富的Java技术知识点和面试常见问题。以下将从Java语言基础、核心特性、集合框架、多线程、网络编程、异常处理、JVM内存...
综上所述,这份“JAVA电子教案(谭浩强)”将覆盖以上所有知识点,并可能深入到更多的细节,如异常的具体类型、集合框架的高级用法、IO流的复杂操作以及并发编程的策略等。对于初学者来说,这是一份非常全面且实用的...
下面将详细讨论这些知识点。 1. **Java CRUD操作**: - **Create(创建)**: 在Java中,创建数据通常涉及到对象的实例化。例如,我们可能有一个`Student`类,通过`new Student()`创建新的学生对象。 - **Read...
以下是根据标题和描述推测的一些可能涵盖的Java知识点: 1. **基础概念** - Java的历史和发展:了解Java的起源、主要版本以及其在软件开发中的应用。 - Java的特点:讨论Java的跨平台性、自动内存管理、面向对象...
通过上述知识点的学习,我们可以掌握ArrayList集合的基本使用,包括创建集合、添加、删除、修改以及遍历集合元素等操作,能够针对具体的需求来编写相应的Java程序代码。此外,使用泛型来约束集合中的数据类型是提高...
Java容器ArrayList知识点总结 Java容器ArrayList是Java集合框架中的一种常用的容器实现,它的底层实现是基于数组的。ArrayList具有访问元素效率高、查询快、插入、修改、删除元素慢等特点,与LinkedList相比,它...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而...以上知识点构成了Java程序员应掌握的基本技能,无论是初学者还是经验丰富的开发者,都需要不断地学习和实践以提升自己的Java技术水平。
该书详细介绍了Java语言的基础知识以及如何将其应用于实际开发场景。第五版更新了最新的Java技术,确保读者能够掌握当前版本的Java编程技能。 Java是一种广泛应用的面向对象的编程语言,由Sun Microsystems(现为...
在这里,我们可以讨论几个关键的Java API知识点: 1. **Java核心类库**:Java API的核心类库包括`java.lang`、`java.util`、`java.io`、`java.net`等。`java.lang`是最基本的包,包含所有Java程序都会用到的类,如`...
以上是Java私塾面试题集中的核心知识点,掌握这些内容对于理解Java基础至关重要。通过解答这些问题,可以有效地评估并提高个人的Java编程技能。在实际面试中,应答者不仅需要知道答案,还需要能够解释原理,给出实例...