Как мне создать новые переменные в зависимости от размера списка? - PullRequest
2 голосов
/ 11 мая 2010

У меня есть List с допустимым размером n , и мне нужно динамически создавать n переменные, т.е. я хочу динамически создавать переменные в зависимости от размера списка. Как мне этого добиться?

Скажите, у меня есть List как List<Integer> year с n элементами в нем;

Затем я должен создать переменные n Integer из приведенного выше списка.

РЕДАКТИРОВАТЬ: Если у меня есть список с 3 элементами, я хочу создать 3 переменные, такие как

a = list(0);
b = list(1);
c = list(2);

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

спасибо.

Ответы [ 2 ]

7 голосов
/ 11 мая 2010

Вы не можете создать n локальные переменные, как вам кажется. (Как бы их звали?)

Вам необходимо сохранить переменные (или, скорее, целочисленные значения) в List или каком-либо другом Collection и заполнить их внутри цикла:

int n = year.size();
List<Integer> theIntegers = new ArrayList<Integer>(n);
for (int i = 0; i < n; i++)
    theIntegers.add(i);

дает вам year.size() количество целых чисел (0, 1, 2, ...).

Затем вы можете получить доступ к целым числам через

theIntegers.get(4);

если вы хотите прочитать целое число с индексом 4. и

theIntegers.set(4, 10);

если вы хотите обновить целое число с индексом 4 до значения 10.


В этом случае вы также можете создать массив:

int[] ints = new int[year.size()];
for (int i = 0; i < ints.length; i++)
    ints[i] = i;
0 голосов
/ 11 мая 2010

В Java нет способа динамически добавлять переменные в область видимости. Вы можете использовать карту как тип переменной ... ну, вместо этого отображение:

final List<Integer> years = getYearList();
final Map<String, Integer> yearMapping = new HashMap<String, Integer>();
for(int year : years)
{
    final String name = generateNameForYear(year);
    yearMapping.add(name, new Integer(year));
}

// Later... Get "variables" out of the map:
final String variableName = "fooYear";
if (yearMapping.containsKey(variableName))
{
    final Integer variableValue = yearMapping.get(variableName);
}
else
{
    // "variable" does not exist.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...