如何声明未知大小的字符串数组[](JAVA)

时间:2016-08-30 11:50:29

标签: java arrays string

我希望我的public class AppConfig extends ResourceConfig { public AppConfig() { register(...); } } 保持静止,但我仍然不知道它的大小。

有没有办法声明未知大小的字符串数组? 我尽可能不想使用ArrayList

6 个答案:

答案 0 :(得分:18)

当您声明时,您不需要知道数组大小

String[] myArray;

但是你需要知道初始化时的大小(因为 Java虚拟机需要预先为数组保留连续的内存块):

myArray = new String[256];

如果你不知道在初始化它的时候需要的大小,你需要一个List<String>,否则你将被迫自己实施它(这几乎肯定是更糟糕的选择)。

答案 1 :(得分:3)

不,它需要声明,因此在你可以设置元素之前有一个长度。

如果您想调整数组的大小,您必须执行以下操作:Expanding an Array?

答案 2 :(得分:3)

String [] array = new String[1];

在使用真正的数组n个元素初始化之后,它将被垃圾收集。

array = new String[n];

当然它有性能下降但它应该是不重要的,除非你对许多不同的数组重复相同。

答案 3 :(得分:1)

list更适合操纵&#34;数组&#34;你不知道长度。

答案 4 :(得分:1)

使用Java.util.ArrayList或LinkedList是执行此操作的常用方法。 我认识的数据不可能

示例:

列出unindexedVectors = new ArrayList();

unindexedVectors.add(2.22f);

unindexedVectors.get(2);

答案 5 :(得分:0)

我向那些说话的人道歉,这很容易做到。

import java.util.Random;

public class Roll_2 {
static Random random = new Random();

public static void main(String[] args) {
int[] variableArray1 = init(random.nextInt(9)); // random size
int[] variableArray2 = init(random.nextInt(9)); // random size
int[] variableArray3 = init(random.nextInt(9)); // random size

randomaize(variableArray1); // randomize elements
randomaize(variableArray2); // randomize elements
randomaize(variableArray3); // randomize elements

print(variableArray1);  // print final
print(variableArray2);  // print final
print(variableArray3);  // print final
}
private static int[] init(int x) {
int[] arr = new int[x];
return arr;
}
private static void print(int[] body) {
System.out.print("[");
for (int i=0;i<body.length;i++) {
System.out.print(body[i]);
if (i<body.length-1) System.out.print(" ");
}
System.out.println("]");
}
private static void randomaize(int[] body) {
for (int i=0;i<body.length;i++) {
body[i] = random.nextInt(9);
}
}
}
  

示例运行1:       [1 7 2]       [5 2 8 6 8 3 0 8]       []

     

样本运行2:[2 5 6 8 0 7 0 6] [0 0 1] [2 1 2 1 6]

     

样本运行3:[8 3 3] [7] [1 3 7 3 1 2]