Доступ к методу в последнем объекте в LinkedHashMap - PullRequest
0 голосов
/ 03 мая 2018

У меня есть LinkedHashMap, который содержит объект в key и один в value.

Я использовал код

yourShots.keySet().toArray()[yourShots.size()-1]

чтобы вернуть последний объект keys. Однако я не могу получить доступ к методу, который есть у объекта.

Я использовал метод getClass(), чтобы определить, что у меня действительно есть правильный тип объекта, но метод не может быть вызван. Я просто получаю сообщение об ошибке, что метод не может быть найден.

Я что-то не так делаю?

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Изменить:
Вы можете конвертировать keySet в List и затем получить последний объект.
Примерно так:

List<Key> keys = new ArrayList(yourShots.keySet());
Key lastKey = keys.get(keys.size() - 1);

Исходное сообщение
Вы используете неправильный метод.

yourShots.keySet() возвращает Set, содержащий все ключи в вашем Map.

чтобы получить доступ к последнему значению на вашей карте, вам нужно позвонить: yourShots.values()

Надеюсь, это поможет

0 голосов
/ 03 мая 2018

В качестве альтернативы вы можете использовать Iterator, чтобы избежать копирования всех ненужных ключей в массив, чтобы потом выбросить его. Он также сохраняет актёрский состав благодаря своей универсальности.

Key key = null;
for(Iterator<Key> iterator = yourShots.keySet().iterator(); iterator.hasNext();) {
    key = iterator.next();
}
0 голосов
/ 03 мая 2018

toArray даст вам общий Object тип. Вы должны привести его к классу key, прежде чем использовать его.

KeyClass key = (KeyClass) yourShots.keySet().toArray()[yourShots.size()-1];
// Here you can access your desired method

Edit:

Как подсказывает @rgettman, вы можете использовать перегруженную версию toArray(T[]), чтобы избежать приведения. В этом случае вы должны заранее предоставить инициализированный массив размером keySet().

...