本文导入自一个特别古老的 WordPress 博客,内容可能会显得太年轻、太简单,不具有太大参考价值! 了解详情»
数组是个好东西,好处很多这里就不一一叙述了。我对其比较关注是因为小型设备(例如手机)的内存一般不能和电脑相比(这是针对我这类非智能机用户而言的),所以在为它们编程的时候要注意好内存的管理,坚持科学发展观,走出一条投入少,产出多,科技含量高,资源消耗低,环境污染小,人力资源得到充分发挥的新型发展道路。 (我删去部分文字,以符合程序编程和目前全国情况)

不过不知道大家在使用数组时候有没有感受到这种杯具:
追加一个新数据困难、删除其中一个数据困难、在中间插入一个数据也困难
如果有,那么就赶快看看本文的代码吧。

在尾部追加一个数据

Java不是Visual Basic,它没有ReDim这种方便的东西。在VB里面,使用带preserve的ReDim就可以保留数组原有数据,同时修改数组长度。

杯具就是我在用Java的J2ME。本来打算用Vector方便地进行管理,但是据说这东东占用内存有些杯具,所以就无视了。

现在我有一个这种数组

[java]String[] my=new String(1); my[0] = "第一个";[/java]

但是很明显,我们不可以,也没有append这类函数。不过不要怕:

[java]String[] t = new String[my.length+1]; System.arraycopy(my, 0, t, 0, my.length); t[t.length-1]="我补充了一条"; my=t;[/java]

就这样,我补充了一条数据。
.

删除其中的某项内容

VB的ReDim又在嘲笑我们了……没关系,用自己的代码反击之

(安全警告:这个代码我还没有测试)

同上文的内容,我有了叫做my的数组,其中已经有两条数据了。我要删除第2条数据。

[java]int i = 2-1; String[] t = new String[my.length-1]; System.arraycopy(my, 0, t, 0, i); System.arraycopy(my, i+1, t, i, my.length-i); my=t;[/java]

删除数据就这么简单
.

在中间插入内容

这次ReDim就不方便了,它还得参照这个代码呢

(安全提示:已经测试,Ok了)

回到第一个那里,my的数组中有两条数据。这次在位置2插入一个数据。

[java light="true"]int i = 2-1; String[] t = new String[my.length+1]; System.arraycopy(my, 0, t, 0, i); System.arraycopy(my, i, t, i+1, my.length-i); t[i]="插进来了"; my=t; [/java]

如果你正在折腾VB,可以参照一下,不过里面没有arraycopy这个超棒的函数哦。呵,呵。
.

补充:arraycopy这个东西

在Eclipse里面我习惯了自动完成功能,打进去System.就弹出了一个arraycopy。开始我对其不怎么看重,可是后来渐渐地我发现:这东西太棒了!

它是这样的

System.arraycopy(来源数组, 来源起始点, 目标数组, 目标起始点, 复制多少项);

一般我们就这样使用它

[java]System.arraycopy(source, 0, copyto, 2, 3);[/java]

这样子,copyto[2]到copyto[4]就对应的变成了source[0]到source[2]的内容了