Есть ли способ итерации LinkedHashMap
(который имеет определенный порядок) с помощью индекса вместо цикла foreach
? Мне нужно получить доступ к элементам с помощью индекса.Получение значений пары значений с использованием индекса
Следующий код выводит всю карту:
public void print(Map<String, Integer> map)
{
for (Map.Entry<String, Integer> entryMap : map.entrySet())
{
System.out.println(entryMap.getValue() + " = " + entryMap.getKey());
}
}
Как я могу сделать то же самое, но доступ к элементам с помощью индекса вместо этого?
public void print(Map<String, Integer> map)
{
for (int i = 0; i< map.size(); i++)
{
// getValue() and getKey() are undefined
System.out.println(map.get(i).getValue() + " = " + map.get(i).getKey());
}
}
Следующая возвращает только ключи, но мне нужны значения:
public String getByIndex(Map<String, Integer> map, int index)
{
List<String> keys = new ArrayList<>(map.keySet());
return (String) keys.get(index);
}
дубликат дубликата по http://stackoverflow.com/questions/13581997/how-get-value-from-linkedhashmap-based-on-index-not-on-key –
'LinkedHashMap' сохраняет порядок вставки, так что итерация по своим значениям() ', используя усиленный цикл, должна дать вам элементы в том же порядке, который вы их поместили. Если вам нужен счетчик, просто определите его в цикле for, увеличив его внутри. – A4L
Вам нужны индексы во время обработки записей, или вам нужен произвольный доступ? Если первый, вы можете создать класс Pair и поток значений 'Pair>, а затем вам не нужно будет создавать полную параллельную копию. Если последний, повторите «entrySet()» и поместите значения в 'ArrayList >'. –