自从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 < src.length; i++) { dest[i] = src[i]; } //返回扩充后的数组 return dest; } // 输出 public void print() { for (int i = 0; i < count; 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.length - 1; 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 < 10; 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工具网。
推荐阅读: