数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按无序的形式组织起来的一种形式
在定义之初,数组的长度就被定义
新建数组有很多方式 下面两个都可以 但一般书写习惯会选择第一种
1 String[] array = new String[5]; //新建一个长度为5的字符串数组
1 String array[] = new String[5]; //新建一个长度为5的字符串数组
由于数组的长度一旦初始化就无法改变,所以我们需要另辟思路
假如我有一个只能装5个鸡蛋的篮子
现在我想多放入一个鸡蛋 但篮子放不下 怎么办!!
用传说中的四步法就可以解决这个问题啦
1.找一个能放下6个鸡蛋的容器!
2.将五个鸡蛋放入后来的容器!
3.将拿来的第六个鸡蛋也放入容器!
4.将之前的“篮子”标签撕下,贴在新容器上!
此时,我就有了一个能装6只鸡蛋的篮子!是不是很简单呢
数组也是这样的
将篮子看做为一个长度为5的数组 其元素有 1 ,2 ,3 ,4 ,5
此时有一个元素 6 需要加入
则先新建一个长度为6的数组
然后将原来数组中的元素依次放入新建的数组
然后将元素 6 也放入其中
然后将原来的篮子标签撕下 给新的数组
将原数组的地址指向新数组
想必看到这里 ,思路应该没有问题了
代码实现如下:
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();
}
}