我需要一大堆单词。所以我使用一个存储四个单词的数组。问题是我需要300多个阵列。我认为我的解决方案并不好......
首先,我将这些单词存储在数组中,如下所示:
array1 = new String[]{"Hello","Hello","Hello","Hello"};
array2 = new String[]{"Hello","Hello","Hello","Hello"};
array3 = new String[]{"Hello","Hello","Hello","Hello"};
array4 = new String[]{"Hello","Hello","Hello","Hello"};
array5 = new String[]{"Hello","Hello","Hello","Hello"};
然后我生成一个选择数组的随机数。交换机外壳非常大,对许多阵列而言看起来都是一个糟糕的解决方案。
int random = r.nextInt((5 - 1) + 1) + 1;
switch(random){
case 1: array = array1; break;
case 2: array = array2; break;
case 3: array = array3; break;
case 4: array = array4; break;
case 5: array = array5; break;
}
所以,如果我有很多阵列,那么交换机案例将非常庞大且不清楚。我需要一些想法以获得更好的解决方案。
来自德国的问候。 :)
答案 0 :(得分:1)
更好的解决方案是保留一个数组数组(一个2D数组,如Ryan的评论中所示)。不要使用switch语句,而是使用随机变量作为外部数组的索引。
填充数组的一种可能方法......
int numArrays = 5;
int numElements = 4;
String[][] arrays = new String[numArrays][numElements];
for (int i=0; i<numArrays; i++)
{
for (int j=0; j<numElements; j++)
{
arrays[i][j] = "Hello";
}
}
随机获取数组......
int random = r.nextInt(numArrays);
String[] array = arrays[random];
答案 1 :(得分:0)
也许您可以创建这样的地图:
Map<Integer,String[]> storedArray = new HashMap<Integer,String[]>();
并使用密钥获取阵列?
答案 2 :(得分:0)
你的问题有两个答案,一切都取决于你是否严格需要内存上的300多个数组,或者你是否需要。
如果你不是最好的选择是拥有一个包含所有单词的大数组,这甚至可以是一个千字的数组,然后有一个所需大小的第二个并随机填写单词。这种方法使用更少的内存。你的代码看起来像这样:
String[] wDictionary = new String[]{"A...","n..."};
String[] wArray = new String[Array Size];
for (int j=0; j<=wArray.getSize; j++)
{
wArray[j] = wDictionary[random];
}
现在,如果您需要启动和加载300多个阵列,您可以使用Rayan J.的方法并使用二维数组。这里不使用开关盒,而是使用随机选择阵列。它类似于在表中选择多行填充单词的行。
祝你好运!