Другой рабочий подход - преобразование значений карты в массив, а затем получение элемента по индексу.Тестовый запуск 100 000 элементов с помощью поиска по индексу в LinkedHashMap 100 000 объектов с использованием следующих подходов привел к следующим результатам:
//My answer:
public Particle getElementByIndex(LinkedHashMap<Point, Particle> map,int index){
return map.values().toArray(new Particle[map.values().size()])[index];
} //68 965 ms
//Syd Lambert's answer:
public Particle getElementByIndex(LinkedHashMap<Point, Particle> map,int index){
return map.get( (map.keySet().toArray())[ index ] );
} //80 700 ms
В целом получение элемента по индексу из LinkedHashMap представляется довольно сложной операцией.*