1

我是 Java 的新手,如果这似乎是一个愚蠢的问题,或者我正在以非 Java 方式做事(我更熟悉 C 或 Perl 等语言),我深表歉意。

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

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

现在的问题是数组中的元素数量需要增加或减少,具体取决于从服务器返回的内容。因此,我正在尝试(但失败)解决如何生成不同大小的数组。

我知道在 Java 中,数组具有固定长度,所以我希望必须有某种方法可以删除它,然后用新维度重新创建它(不需要在两者之间保留数据)。

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

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

例如,当我的 IDE 惊恐地举起双手时。

有什么建议么?谢谢。

4

4 回答 4

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>();

然后您可以向其中添加项目、按索引检索、删除等。

于 2013-10-16T16:29:23.390 回答
2

您可以只使用 ArrayList。

ArrayList<String> myArray = new ArrayList<String>();
于 2013-10-16T16:22:14.753 回答
1

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

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

或者

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

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

希望这有帮助。

于 2013-10-16T16:25:26.663 回答
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);
于 2013-10-16T16:25:18.223 回答