小码哥数据结构与算法(一): 动态数组
本篇是恋上数据结构与算法(第一季)的学习笔记, 使用JAVA语言
一、数组(Array)
- 数组是一种
顺序存储的线性表,所有元素的内存地址都是连续的
int[] array = new int[]{11, 22, 33} 复制代码
在很多编程语言中, 数组有个致命的缺点, 无法动态修改容量
实际开发中我们希望数组的容量是动态变化的
二、动态数组
- 可以通过数组实现一个动态数组, 动态数组的容量是动态变化的
- 可以对动态数组进行
增删改查操作
// 元素的数量 int size(); // 是否为空 boolean isEmpty(); // 是否包含某个元素 boolean contains(E element); // 添加元素到最后面 void add(E element); // 返回index位置对应的元素 E get(int index); // 设置index位置的元素 E set(int index, E element); // 往index位置添加元素 void add(int index, E element); // 删除index位置对应的元素 E remove(int index); // 查看元素的位置 int indexOf(E element); // 清除所有元素 void clear(); 复制代码
三、动态数组的设计
- 创建类
ArrayList如下图, 创建size属性来管理数组中元素的个数, 创建elements属性来管理存取的数据
public class ArrayList<E> { private int size; private E[] elements; } 复制代码
- 添加初始化方法, 创建
elements数组, 并指定elements默认的容量
public class ArrayList<E> { private int size; private E[] elements; // 设置elements数组默认的初始化空间 private static final int CAPACITY_DEFAULT = 10; public ArrayList(int capacity) { capacity = capacity < CAPACITY_DEFAULT ? CAPACITY_DEFAULT : capacity; elements = (E[]) new Object[capacity]; } // 默认情况 public ArrayList() { this(CAPACITY_DEFAULT); } } 复制代码

