Java:删除并重新创建具有不同大小的数组

时间:2013-10-16 16:20:07

标签: java android arrays

我是Java的新手,所以如果这看起来像是一个愚蠢的问题,或者我是以非Java方式做事(我更熟悉C或Perl等语言),那么道歉。

我正在开发一款Android应用程序,该应用程序定期从网络服务器更新其数据,并在运行之间将其数据存储为共享首选项。

数据(从共享首选项或在线更新中读取)进入一个数组,该数组将在应用程序周围的各个点使用。

现在的问题是,数组中的元素数量需要增长或缩小,具体取决于从服务器返回的内容。所以我正在尝试(并且失败)找出如何生成不同大小的数组。

我知道在Java中一个数组有一个固定的长度,所以我希望必须有一些方法来删除它,然后用新的维度重新创建它(没有要求在两者之间保持数据)。

可悲的是,这显然不像我猜的那样容易。

    String[] myArray = new String[10];
    [...]
    myArray = new String[100];
例如,因为我的IDE对此非常恐怖。

有什么建议吗?感谢。

4 个答案:

答案 0 :(得分:2)

您可以使用ArrayList。

ArrayList<String> myArray = new ArrayList<String>();

答案 1 :(得分:2)

此代码:

String[] myArray = new String[10];
[...]
myArray = new String[100];

语法上绝对正确。为了看到这个,我建议你在你最喜欢的文本编辑器(而不是IDE)中创建一个小的测试java文件,比如名为Test.java并粘贴到它:

public class Test {
    public static void main(String[] args) {
        String[] arr = new String[10];
        System.out.println("Size: " + arr.length);
        arr = new String[100];
        System.out.println("Size: " + arr.length);
    }
}

然后从命令提示符编译它 - 它编译得非常好 - 并从命令提示符运行:

$ vim Test.java
...
$ javac Test.java
$ java Test
Size: 10
Size: 100

如果你的IDE抱怨,那么IDE是错误的,或者代码中的其他地方有错误。

说了这么多,如果你需要删除/调整你的数组,那么数组可能不是你的正确数据结构,List是一个更好的数据结构。具体而言,ArrayList,更具体地说,ArrayList<String>

List<String> data = new ArrayList<String>();

然后你可以添加项目,通过索引检索,删除等等。

答案 2 :(得分:1)

如果没有重复值,您可以使用List

List<String> list=new ArrayList<String>();

ArrayList<String> arrayList=new ArrayList<String>();

这两者都可以动态增长和缩小。

希望得到这个帮助。

答案 3 :(得分:0)

使用ArrayList代替原始数组:

List<String> myArray = new ArrayList<String>(initialCapacity);
myArray.add("something");

如果你真的知道自己在做什么并希望拥有String[],那么你必须使用System.arraycopy()将所有元素复制到新数组中:

String[] myArray = new String[10];
String[] newArray = new String[100];
System.arraycopy(myArray, 0, newArray, 0, myArray.length);