`

java需要关注的知识点---ArrayList

阅读更多
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语言的资源。其中,标签"源码"和"工具"提醒我们不仅要关注理论,还要关注实际应用和开发工具。 首先,学习Java源码是理解...

    java提高篇(二一)-----ArrayList.pdf

    通过上述知识点的阐述,可以了解到ArrayList在Java集合框架中的重要性以及其内部机制。熟练掌握ArrayList的使用将大大提高Java开发的效率和代码质量。在实际开发中,还需要结合具体的业务场景和性能要求,合理选择...

    java基础教程----精华版

    下面将详细介绍Java语言的核心概念和关键知识点。 1. **Java语法基础**: - **变量**:在Java中,变量是存储数据的容器,分为基本类型(如int, double, boolean等)和引用类型(如类、接口、数组)。 - **数据...

    中信java培训资料------第一部分

    【归纳总结shi.doc】可能是对一段时间内学习内容的提炼,包含了关键知识点的梳理,比如类与对象的区别、封装、继承和多态性这面向对象的三大特性,以及异常处理机制和Java内存管理的基本原理,如垃圾回收机制。...

    Java综合性实验----------

    这个实验涵盖了从基础到高级的多个Java知识点,旨在提升对Java语言的理解和应用能力。 首先,让我们关注"JavaCodeAnalyzer.jar"这个文件。这很可能是一个用于分析Java源代码的工具或者库。Java代码分析器通常用于...

    arrayliSt---listDemo

    下面我们将深入探讨ArrayList的相关知识点。 1. **ArrayList的构造** ArrayList在初始化时,可以通过不带参数的构造器创建一个空的列表,或者指定初始容量的构造器来避免频繁的容量扩展。例如: ```java ...

    java综合知识点总结-必背.zip

    这份“java综合知识点总结-必背.zip”文件很可能是为了帮助Java学习者或开发者整理和回顾核心概念,以便深入理解和应用。以下是根据标题和描述可能包含的一些关键知识点的详细解释: 1. **基础语法**: - 变量:...

    46-Java知识点 手写ArrayList1

    Java 知识点 手写 ArrayList Java 中最常用的类是 ArrayList,它的实现原理和方法非常重要。在面试中,经常要求手写一个 ArrayList,以考察应聘者对 ArrayList 的熟悉程度。本文将详细介绍如何手写一个 ArrayList,...

    java集合知识点详解,包括ArrayList和 HashSet以及Iterator等

    图文并茂,能让大家很好的理解java中这个重要的知识点。 此文档需要wps或者office软件来查看,如果你没有此软件,到http://www.wps.com.cn 下载wps即可查看此文档。 注:本人所有资源都是共享的,的资源分都是0!

    java面试java-interview-guide-master.zip

    这份"java面试java_interview_guide-master.zip"资源显然是为准备Java面试而设计的,包含了丰富的Java技术知识点和面试常见问题。以下将从Java语言基础、核心特性、集合框架、多线程、网络编程、异常处理、JVM内存...

    JAVA电子教案------入门级java学习资料

    综上所述,这份“JAVA电子教案(谭浩强)”将覆盖以上所有知识点,并可能深入到更多的细节,如异常的具体类型、集合框架的高级用法、IO流的复杂操作以及并发编程的策略等。对于初学者来说,这是一份非常全面且实用的...

    java_latihan_crud-sort-arraylist-regex-

    下面将详细讨论这些知识点。 1. **Java CRUD操作**: - **Create(创建)**: 在Java中,创建数据通常涉及到对象的实例化。例如,我们可能有一个`Student`类,通过`new Student()`创建新的学生对象。 - **Read...

    Java面试题大全--new

    以下是根据标题和描述推测的一些可能涵盖的Java知识点: 1. **基础概念** - Java的历史和发展:了解Java的起源、主要版本以及其在软件开发中的应用。 - Java的特点:讨论Java的跨平台性、自动内存管理、面向对象...

    day09-ArrayList集合&学生管理系统.pdf

    通过上述知识点的学习,我们可以掌握ArrayList集合的基本使用,包括创建集合、添加、删除、修改以及遍历集合元素等操作,能够针对具体的需求来编写相应的Java程序代码。此外,使用泛型来约束集合中的数据类型是提高...

    Java容器ArrayList知识点总结

    Java容器ArrayList知识点总结 Java容器ArrayList是Java集合框架中的一种常用的容器实现,它的底层实现是基于数组的。ArrayList具有访问元素效率高、查询快、插入、修改、删除元素慢等特点,与LinkedList相比,它...

    java 的试题------

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而...以上知识点构成了Java程序员应掌握的基本技能,无论是初学者还是经验丰富的开发者,都需要不断地学习和实践以提升自己的Java技术水平。

    learning-java-introduction-real-world-programming-5th.rar

    该书详细介绍了Java语言的基础知识以及如何将其应用于实际开发场景。第五版更新了最新的Java技术,确保读者能够掌握当前版本的Java编程技能。 Java是一种广泛应用的面向对象的编程语言,由Sun Microsystems(现为...

    JAVA 编程 API基础 JAVA开发平台,JAVA编程资源----JAVA API.zip

    在这里,我们可以讨论几个关键的Java API知识点: 1. **Java核心类库**:Java API的核心类库包括`java.lang`、`java.util`、`java.io`、`java.net`等。`java.lang`是最基本的包,包含所有Java程序都会用到的类,如`...

    java私塾面试题----JAVA基础1.rar

    以上是Java私塾面试题集中的核心知识点,掌握这些内容对于理解Java基础至关重要。通过解答这些问题,可以有效地评估并提高个人的Java编程技能。在实际面试中,应答者不仅需要知道答案,还需要能够解释原理,给出实例...

Global site tag (gtag.js) - Google Analytics