Java LinkedHashMap получить первую или последнюю запись - PullRequest
114 голосов
/ 20 декабря 2009

Я использовал LinkedHashMap, потому что важен порядок, в котором ключи вводятся на карте.

Но теперь я хочу получить значение ключа первым (первая введенная запись) или последним.

Должен ли быть метод, подобный first() и last() или что-то в этом роде?

Нужен ли мне итератор, чтобы просто получить первую запись ключа? Вот почему я использовал LinkedHashMap!

Спасибо!

Ответы [ 12 ]

0 голосов
/ 26 июля 2013

Да, я столкнулся с той же проблемой, но, к счастью, мне нужен только первый элемент ... - Это то, что я сделал для него.

private String getDefaultPlayerType()
{
    String defaultPlayerType = "";
    for(LinkedHashMap.Entry<String,Integer> entry : getLeagueByName(currentLeague).getStatisticsOrder().entrySet())
    {
        defaultPlayerType = entry.getKey();
        break;
    }
    return defaultPlayerType;
}

Если вам также нужен последний элемент - я бы посмотрел, как изменить порядок вашей карты - сохраните его во временной переменной, получите доступ к первому элементу на обратной карте (поэтому это будет ваш последний элемент) , убить временную переменную.

Вот несколько хороших ответов о том, как изменить порядок хэш-карт:

Как перебирать хэш-карту в обратном порядке в Java

Если вы используете помощь по вышеуказанной ссылке, пожалуйста, отдайте им голоса :) Надеюсь, это кому-нибудь поможет.

0 голосов
/ 07 ноября 2012

Хотя connectedHashMap не предоставляет никакого метода для получения первого, последнего или какого-либо конкретного объекта.

Но это довольно тривиально:

  • Карта orderMap = new LinkedHashMap ();
    Set al = orderMap.keySet ();

теперь используется итератор для всего объекта; Вы можете получить любой объект.

...