2013-09-26 5 views
-3

Мне нужно написать java-программу, где мне нужно инициализировать 9000 значений int. Как инициализировать этот статический массив?Как инициализировать огромный массив в java?

У меня есть значения, такие как 20954,70955,20156,3057,9058,20759,18960,961 и т. Д. (9000 номеров) .... Я хочу инициализировать эти числа в массиве.

Аналогичным образом у меня есть 8 массивов.

Я могу сохранить в текстовом файле и прочитать его во время выполнения. Но для синтаксического анализа это требует времени. Предложите пожалуйста.

+0

Что ваша проблема? –

+5

9000 'int' не огромен. – millimoose

+1

Итак, откуда вы берете значения? Я имею в виду, ты их сейчас написал на бумаге или около того? – isnot2bad

ответ

0
int[] manyIntegers= new int[9000]; 
+4

Я предполагаю, что вы имеете в виду int [] not Int –

+0

У меня есть значения, такие как 20954,20955,20956,20957,20958,20959,20960,20961 и т. Д .... И также похожие, как у меня еще семь массивов. Когда я помещаю это в конструктор, он показывает пределы байтов. – Rajesh

+0

Если номер int больше 65535, вы должны использовать LONG. Not int ..... – Reinherd

1
// Intialize 
int[] integers = new int[9000]; 

// Populate with some random integers 
for(int i = 0; i < integers.length; i++){ 
    integers[i] = new Random().nextInt(); 
} 

// Write the values in a file 
PrintWriter pr = null; 

try { 
    pr = new PrintWriter("outputFile.txt");  

    for (int i=0; i < integers.length; i++) { 
     pr.println(integers[i]); 
    } 

} catch (Exception e) { 

    e.printStackTrace(); 
    // TODO Handle appropriately 

} finally { 

    if(pr != null) 
     pr.close(); 

} 
+0

У меня есть значения, такие как 20954,20955,20956,20957,20958,20959,20960,20961 и т. Д .... Я хочу инициализировать эти числа в массиве. Аналогично у меня есть 8 массивов. – Rajesh

+0

@Rajeshkumar Вам нужно сделать что-то вроде целых чисел [index] = 20954; где index - это позиция в массиве. Итак, если вы хотите, чтобы первый элемент в массиве содержал 20960, вы делали бы целые числа [0] = 20960; Помните, что массив начинается с индекса 0. –

2

Вы можете хорошо инициализируется так же, как обычный массив int размера 9000.

int[] numbers = new int[9000]; 

Теперь, чтобы загрузить значения в массив, вы можете использовать механизм петлирования.

for(int i = 0; i< numbers.length; i++) { 
    number[i] = // your value 
} 

Но еще вопрос, как вы получаете так называемые 9000 целых чисел?

Если вы получаете значения из разделенного запятыми String, как "2,5,23,523,", вы можете сделать.

// String input = "2,5,23,523"; // 9000 integers 
String[] strArray = input.split(","); 
int[] numbers = new int[strArray.length]; 
for(int i = 0; i < strArray.length; i++) { 
    numbers[i] = Integer.parseInt(strArray[i]); 
} 

Или

int[] numbers = { 2, 5, 23, 323, 2342, 1351 }; // 9000 numbers 
+0

Извините, если я разбираю строку, потребуется больше времени для выполнения. Также похоже, что у меня есть 8 массивов. Значения являются только статическими. – Rajesh

+0

@Rajeshkumar Вы можете обновить свой вопрос. Основываясь на вашем комментарии, у вас есть значения, такие как '20954,20955,20956,20957,20958,20959,20960,20961', которые являются последовательными, для которых вы можете легко использовать логику цикла. Как вы уже упоминали, у вас еще 7 таких массивов, вы можете использовать несколько циклов для заполнения одного массива целых чисел i.e 'numbers'. Остерегайтесь целочисленного предела i.e '65535', тогда используйте' long'. Обновите свой вопрос и сообщите мне, я последую за ним. Надеясь, вы получили то, что хотите. – TheKojuEffect

+0

Значения, которые я здесь задаю, находятся в последовательности, но не все. – Rajesh

-1

Вы можете инициализировать массив с ArrayList. Например, ArrayList a = new ArrayList();. Конечно, вы должны включать в себя import java.util.ArrayList

+0

Я собираюсь выполнить под низкой версией java (1.4). Там ArrayList не будет работать – Rajesh

0
int[] manyIntegers= new int[9000]; 

for(int i = 0; i < manyIntegers.length; i++){ 
    manyIntegers[i] = YOUR_VALUE; 
} 
3
int[] array= new int[9000]; 
Random random = new Random(); 

for (int i =0; i< array.length; i++) 
{ 
    array[i] = random.nextInt(9000)+1; 
} 
+0

-1: OP спросил, как заполнить массив. Нужно ли использовать Random? – Jayan

+0

Хорошо, это может быть хорошим примером (удаление отрицательного голоса) – Jayan

+0

Люди могут отвечать по-разному ... thnx ... @ Jayan .. – Prabhakaran

0

Если у вас действительно есть 9000 целых чисел, которые не могут быть сгенерированы/рассчитывается как-то, я думаю, что вы должны сделать, это старый добрый способ:

static int[] myValues = new int[] { 
    3, 5, 2, 7, 100, 8, 15, 7, 5645, 134, // the first 10 ints 
    // 899 more lines 
} 

Это так же просто, как записывать их в отдельный текстовый файл, но без необходимости загружать/разбирать что-то.

Поскольку максимальное число статического кода инициализатора составляет 65535 байт, в этом же классе не должно быть полей static. Мне удалось инициализировать массив размером int длиной 9516, но не более.

+0

Я получаю «превышение предела 65535 байтов» – Rajesh

+0

Я думаю , вы объявляете локальную переменную внутри метода. Это не работает из-за ограничения. Вместо этого используйте статическую переменную! – isnot2bad

+0

Я был частично неправ. Также существует предел 65535 байт для статического кода инициализатора. Но 9000 ints выполнимы. Я отредактировал свой ответ, чтобы решить эту проблему. – isnot2bad

0

И, конечно, есть Arrays.fill

int[] array = new int[9000]; 
// All of them. 
Arrays.fill(a,2); 
// Just some of them. 
Arrays.fill(a,100,200,6); 
+0

Будет ли он работать под java 1.4 – Rajesh

+0

@Rajesh - [Javadoc] (http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#fill%28int [],% 20int% 29) предлагает «Массивы», существовавшие в Java 1.2. Я не могу найти ссылку на заполнение позже. – OldCurmudgeon

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