深入理解ArrayList(一)

简介: 深入理解ArrayList(一)

ArrayList在我们日常开发中使用的非常频繁,那么我们是否了解ArrayList的内部实现机制呢?是否深入理解了ArrayList?


首先要提出的第一个问题是,如何深入的理解ArrayList呢?达到什么样的程度才叫深入理解呢?


我们采用的方法是从零开始打造一个全新的MyList,而这个类具备的功能和ArrayList几乎完全一样,采用逐步递进的方式,深入浅出,每次对上一次的方案进行分析,存在哪些问题,并提出改进的措施。


需求定义

我们首先提出一个非常简单的需求,定义一个集合类,能够实现字符串的添加操作,如下:

public static void main(String[] args) {
        MyList myList = new MyList();
        myList.add("hello");
}

代码实现

这个需求还是比较简单的,能够实现字符串的添加操作,我们可以采用字符串数组的方式来保存每次添加的字符串,然后用一个标记来表示当前数组的位置。

public class MyList {
    private static final int DEFAULT_CAPACITY = 10;
    private String[] elementData;
    private int size;
    public MyList() {
        elementData = new String[DEFAULT_CAPACITY];
    }
    private void add(String e) {
        this.elementData[size++] = e;
    }
}

构造函数中默认初始化了一个大小为10的字符串数组,这样后续在添加字符串的时候,就可以直接放在这个数组中了。

再使用一个size变量标记当前数组的位置,每次添加新的字符串后,size后移一位,实现字符串的添加操作。


这样我们就完成了一个基于字符串数组的List类的实现,能够实现字符串的添加操作。


虽然我们已经实现了需求,但是请大家思考这样的实现方式存在哪些问题?欢迎下方留言。

目录
相关文章
|
1月前
|
存储 Java
ArrayList
ArrayList是线程不安全的,底层使用 Object[]存储数据,可以存储任何类型的对象,包括 null 值,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。 核心属性: private static final int DEFAULT_CAPACITY = 10;//默认容量 transient Object[] 存储元素的集合 private int size; 元素个数 构造方法: public ArrayList() ; public ArrayList(int initialCapacity) ; public ArrayList(Collection<?
|
2月前
|
安全 Java API
ArrayList 全面详解
关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。本文详细解析了Java集合框架中的ArrayList,包括其定义、特点、成员变量、构造函数、API、主要方法和扩容机制等。欢迎留言交流。
|
4月前
|
存储
ArrayList的使用
ArrayList的使用
26 3
|
安全 Java
你对ArrayList了解多少?
你对ArrayList了解多少?
46 0
|
存储 安全 Java
ArrayList引发的一系列问题
ArrayList引发的一系列问题
105 0
ArrayList引发的一系列问题
|
Java 测试技术 索引
深入理解ArrayList(三)
深入理解ArrayList(三)
74 0
详解ArrayList
1.数据结构 底层使用Object类型的数组实现,线程不安全,添加元素时如果内存已满则会开辟新空间,将原数组copy过去。
99 0
|
Java 开发者
深入理解ArrayList(二)
深入理解ArrayList(二)
84 0
|
算法
深入理解ArrayList(四)
深入理解ArrayList(四)
86 0