В Java, если я - цикличное выполнение по keySet()
из a HashMap
, как делают меня (в цикле), получают числовой индекс того ключа?
В основном, поскольку я циклично выполняюсь через карту, я хочу смочь добраться 0,1,2... Я полагаю, что это было бы более чисто, чем объявление интервала и постепенное увеличение с каждым повторением.
Спасибо.
Если все, что вы пытаетесь сделать, это получить значение из самой хэш-карты, вы можете сделать что-то вроде следующего:
for (Object key : map.keySet()) {
Object value = map.get(key);
//TODO: this
}
Или вы можете перебирать записи на карте, если это то, что вас интересует:
for (Map.Entry<Object, Object> entry : map.entrySet()) {
Object key = entry.getKey();
Object value = entry.getValue();
//TODO: other cool stuff
}
Как сообщество, мы могли бы дать вам лучшие / более подходящие ответы, если бы у нас было какое-то представление, зачем вам нужны индексы или что вы думаете индексы могут сделать для вас.
Вы не можете - набор неупорядочен, поэтому индекс не указан. Как вы говорите, вам нужно будет объявить int. Просто помните, что в следующий раз, когда вы вызовете keySet (), вы не обязательно получите результаты в том же порядке.
Не уверен, что это «чище», но:
List keys = new ArrayList(map.keySet());
for (int i = 0; i < keys.size(); i++) {
Object obj = keys.get(i);
// do stuff here
}
Проще говоря, коллекции на основе хешей не индексируются, поэтому вам придется делать это вручную.