2015-01-28 3 views
-3

Надеюсь, это не дублируется. У меня есть следующий код:arraylist индекс hashmaps за пределами

ArrayList<HashMap<BigInteger, HashSet<Integer>>> maps = new ArrayList<HashMap<BigInteger, HashSet<Integer>>>(); 
maps.get(i).put(key, new HashSet<>()); 

И у меня ошибка индекса за пределами границ. Я думаю, это потому, что я еще не инициализировал arraylist. Любые комментарии?

Редактировать после 17:58 1/28/2015: Вот что. Мне нужно проверить, есть ли i-й хэш-файл (очевидно, я не знаю, существует ли он или нет) содержит определенный ключ или нет. Как я могу узнать, что i-й хэш-файл не существует.

+3

«Я думаю, это потому, что я не инициализировать ArrayList еще.» Ну да - что вы ожидали * 'get (i)' делать, когда список пуст? –

+0

Вы не можете получить что-то из пустого списка. – August

+0

ОК. Главное, что мне нужно проверить, содержит ли i-я запись (карта) arraylist определенный ключ или нет, а затем решает, что делать дальше. – qaz

ответ

1

Вы, кажется, используете функцию .get(int) на пустой ArrayList.

Если вы хотите вставить данные в ArrayList, вам необходимо использовать функцию .add(E). Если вы хотите вставить в определенный индекс, вы можете использовать функцию .add(int, E). В вашем случае, это было бы:

maps.add(i, new HashMap<BigInteger, HashSet<Integer>>()); 
maps.get(i).put(key, new HashSet<>()); 
+0

@Henny. У меня появилась твоя идея. Это простой способ добавить пустые HashMaps в каждый индекс, который мне нужен? – qaz

+0

@qaz Да, просто убедитесь, что всякий раз, когда вы используете '.get (i)', вы уже использовали '.add (i, новый HashMap >())' – Henry

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