我是Java的新手,所以如果这看起来像是一个愚蠢的问题,或者我是以非Java方式做事(我更熟悉C或Perl等语言),那么道歉。
我正在开发一款Android应用程序,该应用程序定期从网络服务器更新其数据,并在运行之间将其数据存储为共享首选项。
数据(从共享首选项或在线更新中读取)进入一个数组,该数组将在应用程序周围的各个点使用。
现在的问题是,数组中的元素数量需要增长或缩小,具体取决于从服务器返回的内容。所以我正在尝试(并且失败)找出如何生成不同大小的数组。
我知道在Java中一个数组有一个固定的长度,所以我希望必须有一些方法来删除它,然后用新的维度重新创建它(没有要求在两者之间保持数据)。
可悲的是,这显然不像我猜的那样容易。
String[] myArray = new String[10];
[...]
myArray = new String[100];
例如,因为我的IDE对此非常恐怖。
有什么建议吗?感谢。
答案 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);