定义一个Object类型的数组,初始容量为10,当添加到第十个元素的时候,数组的长度扩展为原来的两倍

来源:互联网 发布:mac照片导出硬盘 编辑:程序博客网 时间:2024/06/05 06:44

刚入门java,把自己之前考试的一个问题分享出来,一来增加自己的记忆力,也希望能帮助刚开始学习的你

如题:定义一个Object类型的数组,初始容量为10,当添加到第十个元素的时候,数组的长度扩展为原来的两倍

思路:

1.定义一个容量为10的Object类型的数组:Object [ ] obj = new Object[10];

2.增加元素,并且判断当增加到10个元素的时候,扩展数组容量(我的思路是用System.arraycopy(),借助一个中间数组temp,将原数组copy进去temp然后再赋值给obj)

即:

①Object [ ] temp = new Object [obj.length*2] ;//这个中间数组容量是原数组的两倍

②System.arraycopy(obj,0,temp,0,obj.length);// 将原数组copy进去temp

③obj = temp;//将temp赋值给原数组obj

可参考我实现的方式:

/*

 * 定义一个Object类型的数组,初始容量为10

 * 当添加到第十个元素的时候,数组的长度扩展为原来的两倍

 * @author qyj11day

 *

 */

public class AddLength {

private Object[] obj;// object数组

private int index;// 数组下标

 

public Object[] getObj() {

return obj;

}

 

public void setObj(Object[] obj) {

this.obj = obj;

}

 

public int getIndex() {

return index;

}

 

public void setIndex(int index) {

this.index = index;

}

 

public AddLength() {// 默认构造函数

init();

}

 

private void init() {// 数组的初始化

this.index = 0;

this.obj = new Object[10];

}

 

public void addLength(Object ele) {// 添加元素

obj[index] = ele;

index++;

// 如果数组下标达到数组长度就开始扩容

if (index == obj.length) {

Object[] temp = new Object[obj.length * 2];

System.arraycopy(obj, 0, temp, 0, obj.length);

obj = temp;

}

}

 

// 通过下标获取数组里的元素

public Object getEle(int index) {

return obj[index];

}

 

public static void main(String[] args) {

AddLength a = new AddLength();

int sum = 0;

for (int i = 0; i < 20; i++) {

a.addLength(i);

}

//下面做一个简单验证

for (int i = 0; i < a.getIndex(); i++) {

sum += (int) a.getEle(i);

}

System.out.println(a.getIndex()); // 20

System.out.println(sum); // 190

 

}

}




阅读全文
0 0
原创粉丝点击