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

Java:删除并重新创建具有不同大小的数组,java,android,arrays,Java,Android,Arrays,我是一个非常熟悉Java的新手,如果这是一个愚蠢的问题,或者我在用非Java的方式做事(我更熟悉C或Perl之类的语言),我深表歉意 我正在开发一个Android应用程序,它定期从Web服务器更新数据,并将运行之间的数据存储为共享首选项 数据(从共享首选项或在线更新中读取)进入一个数组,该数组将在应用程序的各个位置使用 现在的问题是数组中的元素数量需要增加或减少,这取决于服务器返回的内容。因此,我正在尝试(但失败)解决如何生成不同大小的数组 我知道在Java中数组的长度是固定的,所以我希望一定有

我是一个非常熟悉Java的新手,如果这是一个愚蠢的问题,或者我在用非Java的方式做事(我更熟悉C或Perl之类的语言),我深表歉意

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

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

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

我知道在Java中数组的长度是固定的,所以我希望一定有办法删除它,然后用新的维度重新创建它(不需要在两者之间保存数据)

遗憾的是,这显然不像我猜的那么容易

    String[] myArray = new String[10];
    [...]
    myArray = new String[100];
例如,当我的IDE在恐惧中举起双手时


有什么建议吗?谢谢。

您可以使用ArrayList

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

您只需使用ArrayList即可

ArrayList<String> myArray = new ArrayList<String>();
ArrayList myArray=new ArrayList();
改用基元数组:

List<String> myArray = new ArrayList<String>(initialCapacity);
myArray.add("something");
改用基元数组:

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

如果没有复制值,则可以使用列表

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

ArrayList ArrayList=new ArrayList();
这两者都可以动态地增长和收缩


希望对您有所帮助。

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

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

ArrayList ArrayList=new ArrayList();
这两者都可以动态地增长和收缩

希望有此帮助。

此代码:

String[] myArray = new String[10];
[...]
myArray = new String[100];
在语法上是绝对正确的。为了看到这一点,我建议您在您最喜欢的文本编辑器(不是IDE)中创建一个名为
test.java
的小测试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

List data=new ArrayList();
然后,您可以向其中添加项目、按索引检索、删除等。

此代码:

String[] myArray = new String[10];
[...]
myArray = new String[100];
在语法上是绝对正确的。为了看到这一点,我建议您在您最喜欢的文本编辑器(不是IDE)中创建一个名为
test.java
的小测试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

List data=new ArrayList();

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

为什么不使用
ArrayList
,它可以动态扩展、收缩,也可以删除项目等?@PradeepSimha表示
ArrayList
实现
List
类型。是的,更正@323go谢谢:)使用
List myList=new ArrayList(初始容量);
。它应该根据需要扩展,并且具有与数组相同的访问时间。@PradeepSimha应该为此获得积分。可惜他没有给出答案。为什么不使用
ArrayList
,它可以动态扩展、收缩,还可以删除项目等?@PradeepSimha的意思是
ArrayList
实现
列表
类型。是,更正@323go谢谢:)使用
List myList=new ArrayList(初始容量)。它应该根据需要扩展,并具有与阵列相同的访问时间。@PradeepSimha应该为此获得积分。可惜他没有给出答案。反IDE内容怎么了?如果在IDE中使用,这段代码不会编译吗?@richardingle-什么都没有,我一直在使用IDE。然而,在IDE外部创建一个java文件要比在IDE内部创建一个java文件容易得多。我现在明白你的意思了,我道歉,我已经习惯了双方的宗教热情,我知道在这种情况下不是这样的,但是很可能是其他奇怪的事情导致我的IDE不喜欢这段代码,尽管我不知道是什么。然而,使用ArrayList的建议非常有效,不仅比ArrayList更灵活,而且还提供了有用的学习经验。(超时时继续)我通常不使用IDE,但因为我已经十年没有接触Java了(当时也没有真正接触到Java)我发现Eclipse非常有用,可以帮助我找出一种我仍然感到相当困惑的语言哪里出了问题。(事实上,它为我构建了Android APK,这对我很有帮助……)反IDE内容有什么影响?如果在IDE中使用,这段代码不会编译吗?@richardingle-什么都没有,我一直在使用IDE。然而,在IDE外部创建一个java文件要比在IDE内部创建一个java文件容易得多。我现在明白你的意思了,我道歉,我已经习惯了双方的宗教热情,我知道在这种情况下不是这样的,但是很可能是其他奇怪的事情导致我的IDE不喜欢这段代码,尽管我不知道是什么。然而,使用ArrayList的建议非常有效,不仅比ArrayList更灵活,而且还提供了有用的学习经验。(在超时时继续)我通常不使用IDE,但因为我没有接触Java进行de