java怎样定义动态数组_java如何手写动态数组?实例代码展示

自从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工具网。

推荐阅读:


版权声明:本文为weixin_35639230原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。