您当前的位置:首页 > 计算机 > 编程开发 > Java

java如何定义一个变长数组_如何自定义一个长度可变数组

时间:01-23来源:作者:点击数:

数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按无序的形式组织起来的一种形式

在定义之初,数组的长度就被定义

新建数组有很多方式 下面两个都可以 但一般书写习惯会选择第一种

1 String[] array = new String[5]; //新建一个长度为5的字符串数组

1 String array[] = new String[5]; //新建一个长度为5的字符串数组

由于数组的长度一旦初始化就无法改变,所以我们需要另辟思路

5fe0e89d257ec4cda52c305856f1a3f8.png

假如我有一个只能装5个鸡蛋的篮子

现在我想多放入一个鸡蛋 但篮子放不下 怎么办!!

用传说中的四步法就可以解决这个问题啦

1.找一个能放下6个鸡蛋的容器!

2.将五个鸡蛋放入后来的容器!

3.将拿来的第六个鸡蛋也放入容器!

4.将之前的“篮子”标签撕下,贴在新容器上!

此时,我就有了一个能装6只鸡蛋的篮子!是不是很简单呢

数组也是这样的

f0b4c3a4c9ae798d2d9d100bf4b40d8d.png

将篮子看做为一个长度为5的数组 其元素有 1 ,2 ,3 ,4 ,5

此时有一个元素 6 需要加入

则先新建一个长度为6的数组

6f1929422ec5406b5c30d0228234d813.png

然后将原来数组中的元素依次放入新建的数组

3491c147eec74d95134a133348ba5473.png

然后将元素 6 也放入其中

85d5670459862796f19dbd58a05ece49.png

然后将原来的篮子标签撕下 给新的数组

将原数组的地址指向新数组

cb3e6de1ca319b8c9bfd5aa6a43e928b.png

想必看到这里 ,思路应该没有问题了

代码实现如下:

package com.newer.tw.com;

/**

* 自定义长度可变数组

*

* @author Administrator

*

*/

public class MyList {
// 定义一个初始长度为0的数组,用来缓存数据

private String[] src = new String[0];

// 增加

public void add(String s) {
//定义新数组,长度是原数组长度+1

String[] dest = new String[src.length+1];

//将原数组的数据拷贝到新数组

System.arraycopy(src, 0, dest, 0, src.length);

//将新元素放到dest数组的末尾

dest[src.length]=s;

//将src指向dest

src=dest;

}

// 修改指定位置的元素

public void modify(int index, String s) {
src[index]=s;

}

// 删除指定位置的元素

public void delete(int index) {
String[] dest = new String[src.length-1];

//将原数组的数据拷贝到新数组

System.arraycopy(src, 0, dest, 0, index);

System.arraycopy(src, index+1, dest, index, src.length-1-index);

src=dest;

}

// 获得指定位置的元素

public String get(int index) {
return src[index];

}

// 在指定位置插入指定元素

public void insert(int index, String s) {
//定义新数组,长度是原数组长度+1

String[] dest = new String[src.length+1];

//将原数组的数据拷贝到新数组

System.arraycopy(src, 0, dest, 0, index);

dest[index]=s;

System.arraycopy(src, index, dest, index+1, src.length-index);

src=dest;

}

// 获得元素个数

public int size() {
return src.length;

}

public void print()

{
for(int i=0;i

System.out.println(src[i]);

}

public static void main(String[] args)

{
MyList m=new MyList();

m.add("15");

m.add("16");

m.add("17");

m.add("18");

m.add("19");

System.out.println("插入之前:");

m.print();

m.insert(2,"22");

System.out.println("插入之后:");

m.print();

}

}

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门