简单实现java中ArrayList
来源:互联网 发布:我知谁掌管明天 刘若英 编辑:程序博客网 时间:2024/06/14 09:55
ArrayList实现了一个可变长度数组,ArrayList这个对象包含一个数组,以及当前数组添加的元素个数,以及添加元素个数和数组长度一样的时候将原数组复制到新数组。代码如下。
package test;import java.util.Iterator;import java.util.NoSuchElementException;/** * 实现自己的ArrayList * * @author lenovo * * @param <T> */public class MyArrayList<T> implements Iterable<T> {private static final int DEFAULT_CAPACITY = 16;// 初始化数组长度private static int arraySize;// 数组放入元素的个数private T[] items;// 内部数组存放添加对象public MyArrayList() {// 默认构造器arraySize = 0;items = (T[]) new Object[DEFAULT_CAPACITY];}public T get(int index) {// 根据下标获取元素if (index < 0 || index > arraySize) {throw new ArrayIndexOutOfBoundsException();}return items[index];}public void set(int index, T t) {// 将下标index数组的元素设置为tif (index < 0 || index >= arraySize) {throw new ArrayIndexOutOfBoundsException();}items[index] = t;}public int size() {// 数组实际长度return arraySize;}public void add(T t) {// 想list添加元素tadd(arraySize, t);}public boolean isEmpty() {// 判断list是否为空return arraySize == 0;}public void clear() {// 清空list元素arraySize = 0;enrich(DEFAULT_CAPACITY);}public void add(int index, T t) {// 向下标index添加元素,index后面的元素依次后移if (arraySize == items.length) {enrich(arraySize * 2 + 1);}for (int i = arraySize; i > index; i--) {items[i] = items[i - 1];}items[index] = t;arraySize++;}public void enrich(int newSize) {// 扩容数组System.out.println("扩容");if (newSize < arraySize) {return;}T[] old = items;items = (T[]) new Object[newSize];for (int i = 0; i < arraySize; i++) {items[i] = old[i];}}@Overridepublic Iterator<T> iterator() {//遍历Listreturn new IteratorArray();}private class IteratorArray implements Iterator<T> {private int current = 0;@Overridepublic boolean hasNext() {return current < size();}@Overridepublic T next() {if(!hasNext()) {throw new NoSuchElementException();}return items[current++];}}}
阅读全文
0 0
- 简单实现java中ArrayList
- 数据结构: Java中ArrayList的简单实现
- 简单实现Java中的ArrayList
- ArrayList简单实现Java版
- Java手动实现简单 ArrayList
- java中ArrayList简单用法
- java中ArrayList简单用法
- java中ArrayList的实现
- Java中ArrayList内部实现
- java的ArrayList的简单实现
- 用java实现一个简单的ArrayList
- Java中ArrayList类简单Demo
- Java中List实现之ArrayList
- Java集合中ArrayList的实现原理
- Java 中 ArrayList 的实现解析
- Java中ArrayList具体实现分析1
- Java中ArrayList的实现原理
- JAVA中ArrayList的底层基本实现
- bs前端--弹出子窗体
- opacity 与 rgba 的问题
- 句柄类
- ajax记录
- JavaFX之应用程序线程概述
- 简单实现java中ArrayList
- 队列(循环)
- (二)数据类型(data type)
- 51Nod-1489-蜥蜴和地下室
- Java中事件处理事件监听机制
- Shell实战之一键搭建FastDFs-yellowcong
- linux命令:常用命令
- Docker 网络相关配置
- 【Scikit-Learn 中文文档】把它们放在一起