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

什么是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数组的了解又加深了一步呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值