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