2015-03-10 3 views
1

Мне нужен большой список слов. Поэтому я использую массив, в котором хранятся четыре слова. Проблема в том, что мне нужно более 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; 
    } 

Так что, если у меня много массивов, то коробка-переключатель будет очень большой и неясной. Мне нужны идеи для лучшего решения.

С уважением, германия. :)

+2

Если статические массивы - это то, куда вы хотите пойти, не лучший ли 2D-массив? –

ответ

1

Лучшим решением было бы сохранить массив массивов (2D-массив, как это предлагается в комментариях Райана). Вместо использования оператора 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]; 
0

Возможно, вы можете создать карту, как это:

Map<Integer,String[]> storedArray = new HashMap<Integer,String[]>(); 

и используйте ключ, чтобы получить ваши массивы?

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. и использовать би-мерный массив. Здесь вместо использования случая переключения вы будете использовать случайное для выбора массива. Это было бы похоже на выбор строк в таблице со многими столбцами, заполненными словами.

Кода удачи!

Смежные вопросы