如何创建字符串数组而不在开头指定其长度?

时间:2011-09-13 19:20:19

标签: java arrays processing

我想创建一个字符串数组,但我不知道它的开头长度。这就像数组长度取决于很多因素一样,只有在我将字符串/单词填入其中时才会确定。但是,处理不允许我这样做,它要求我在开头指定长度。我怎么能摆脱这个?...感谢所有的帮助。任何建议将不胜感激。 甘露

5 个答案:

答案 0 :(得分:4)

List<String> strs = new ArrayList<String>();
strs.add("String 1");
strs.add("String 2");
strs.add("String 3");

System.out.println(strs.size()); //3
System.out.println(strs.get(1)); //String 2

这就是你所需要的!您无需担心调整大小,在内存中复制内容等等 - 列表只会根据需要进行扩展。所有的性能细节都得到了处理,除非你真的对它的工作原理感兴趣,否则你不需要阅读这些细节来使用它。

答案 1 :(得分:0)

答案 2 :(得分:0)

我首先使用ArrayList并在必要时调整大小。 Java为ArrayList预先分配内存,因此不是每次调整大小都意味着内容被复制到内存中。访问ArrayList比LinkedList更快(它是O(1)而不是O(n))。只有当你发现调整ArrayList的大小需要花费太多时间时,我才会想到切换到LinkedList。

答案 3 :(得分:0)

使用类型化的ArrayList作为@ berry120建议(否则,你需要一直从Object转换为String)。

此外,如果它有帮助,Processing有一些处理数组的函数(如append()expand())。查看Processing reference中的数组函数

scenes后面提到的数组函数使用System.arraycopy(),如果有任何用途的话。

答案 4 :(得分:-2)

您需要使用LinkedList结构:这为您提供了一个容易扩展的容器数组,并在构造函数中获取初始容量,而不是设置限制。这也比ArrayList更有效,ArrayList每次超过当前容量时都会复制它的内容,而不是简单地添加它。