自从21世纪以来。科学技术水平高速发展,这也促使了新兴技术的不断发展与壮大。越来越多的人开始投入到新技术的学习当中来。其中java的学习则是更多人的选择。今天就为大家介绍一下java如何手写动态数组,并用实际代码展示。一起来看看吧。
首先说一下注意事项。
1.在定义增量时,不要定义成一个固定的值,每次扩充一定比例。
2.比例不是越大越好,也要考虑到内存问题,所以取个合适的值就行。
3. 在Array中的src数组,可以定义成Object类型,那么便可使用全类型的数据,而不是某个固定下来的了。
4. 在删除和增加等方法中,不要使用临时数组来保存数据,那样会耗时耗内存。
5.
尽量不要在方法中出现重复的代码,例如add()和insert()方法中,都需要用到extend()方法中的代码,便可以提取出来封装为方法,易于修改和阅读。
实际代码展示如下:package com.ct.array;
/**
* @author MoonMonster
* @version 创建时间:2020年9月21日 下午10:15:05
*/
public class Array
{
//数组中元素个数
private int count = 0;
//初始容量大小
private int capcity = 16;
//增量,每次增加的比例
private double increment = 1.2;
//初始化数组
private Object[] src = new Object[capcity];
public Array()
{}
//自定义原始数组大小
public Array(int capcity)
{
this.capcity = capcity;
}
// 增加
public void add(Object obj)
{
//判断是否越界,如是,则扩充数组
if (count >= src.length)
{
src = extend();
}
//将新增加的数据放在count处
src[count] = obj;
count++;
}
// 对数组的扩充
private Object[] extend()
{
//扩充后的数组容量是旧的数组的increment倍
Object[] dest = new Object[(int)(src.length * increment)];
for (int i = 0; i
{
dest[i] = src[i];
}
//返回扩充后的数组
return dest;
}
// 输出
public void print()
{
for (int i = 0; i
{
System.out.print(src[i] + " ");
}
System.out.println();
}
// 获得数组大小
public int size()
{
return count;
}
// 插入
public void insert(int index, Object obj)
{
if (count + 1 >= src.length)
{
src = extend();
}
//从最后一个元素开始,把前一个元素放到后一个位置来
for (int i = count; i > index; i--)
{
src[i] = src[i - 1];
}
//将要插入的元素放在index处
src[index] = obj;
//在插入一个元素后,长度+1
count++;
}
//替换index处的数据
public void replace(int index, Object obj)
{
src[index] = obj;
}
//删除index处的数据元素
public void delete(int index)
{
for (int i = index; i
{
src[i] = src[i + 1];
}
count--;
}
//返回index处的数据
public Object get(int index)
{
return src[index];
}
}
测试类代码如下:package com.ct.array;
/**
* @author MoonMonster
* @version 创建时间:2020年9月21日 下午10:20:50
*/
public class Demo
{
public static void main(String[] args)
{
Array arr = new Array();
long t1 = System.currentTimeMillis();
for (int i = 0; i
{
arr.add(new Integer(i));
}
long t2 = System.currentTimeMillis();
System.out.println("耗时: " + (t2 - t1));
arr.insert(2, new Integer(123));
//删除
arr.delete(0);
//输出
arr.print();
//数组长度
System.out.println("数组的长度为: " + arr.size());
}
}
以上就是关于java如何手写动态数组并且通过实际的代码为大家展示。具体的操作还是需要大家自己去熟悉的。如果你对java知识感兴趣,想要了解更多java经典例子,敬请关注奇Q工具网。
推荐阅读: