初学面向对象2,模拟ArrayList实现

本文详细介绍了如何使用Java基本语法和面向对象思想模拟实现ArrayList。从定义动态数组开始,到添加元素、检查容量、增长数组、获取元素及计数、以及移除元素等关键功能,完整地展示了ArrayList的工作原理。通过这个简单的实现,读者可以深入理解ArrayList的内部机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是ArrayList数组

ArrayList数组简单来说就是一个动态数组,通俗点说ArrayList就是一个任意长度的数组。

ArrayList数组的实现概述

Java中ArrayList的实现是基于数组+数组拷贝完成

定义数组

首先定义一个用于存储数据的真实数组数组,并构造他的初始容量为5

/**用于存储数据的真实数组*/
	private Goods[] arr;
	/**数组中元素目前的索引位置*/
	private int index;
	/**
	 * 构造一个指定长度的数组
	 * @param capacity
	 */
	public MyArrayList(int capacity) {
		arr = new Goods[capacity];
	}
向数组里面添加元素,并判断容量是否超出
/**
	 * 添加元素
	 * @param g
	 */
	public void add(Goods g) {
		//检测容量是否足够
		ensureCapacity();
		arr[index++] = g;
	}
判断容量是否超出,如果超出容量增长
/**
	 * 确认容量是否足够
	 */
	private void ensureCapacity() {
		if(index >= arr.length) {
			//容量超出
			grow();
		}
	}
	
	/**
	 * 容量增长
	 */

	private void grow() {
		//获取原数组的长度
		int len = arr.length;
		//创建临时的数长度为原始数组的1.5倍
		Goods[] temp = new Goods[len + (len >> 1)];
		//数组拷贝
		System.arraycopy(arr, 0, temp, 0, len); 
		//将原数组的指针指向新数组地址
		arr = temp;
	}
最后再获取指定的元素位置并且返回元素的总个数
/**
	 * 获取指定位置的元素
	 * @param i
	 * @return
	 */
	public Goods get(int i) {
		return arr[i];
	}
	
	/**
	 * 返回元素的总个数
	 * @return
	 */
	public int size() {
		return index;
	}
最最后再添加移除元素的功能
public void remove(int i) {
		System.arraycopy(arr, i+1, arr, i, arr.length - (i + 1)); 
		index--;
	}
小结一下

就这样一个简简单单的ArrayList数组就完美的呈现出来了,虽然对我们来说根本用不上,但是其目的是为了让大家知道Arraylist具体是一个怎样的实现过程,看了这个你是不是对ArrayList数组的了解又加深了一步呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值