Сортировать значения в HashMap - PullRequest
1 голос
/ 19 сентября 2011

У вас есть две хэш-карты HM1 и HM2, где ключ = значение Id (long) = метка времени. Вам нужно дать программу, которая будет возвращать список идентификаторов, объединенных из обеих хеш-карт, чтобы они сортировались по их временным меткам.

Мое решение: а. Оберните метку времени и идентификатор объекта в другом объекте. Написать компаратор на основе отметки времени объекта, отсортировать список объектов и вернуть идентификаторы.

Есть ли более разумный способ сделать это?

Ответы [ 2 ]

1 голос
/ 19 сентября 2011

Звучит как совершенно разумный способ пойти ко мне.Вам нужно будет рассмотреть ситуацию, когда один идентификатор появляется на обеих картах, но кроме этого он звучит очень просто.

Обратите внимание, что вам не обязательно иметь отдельный внешний компаратор - вы могли бы сделатьваш новый класс реализует Comparable<T> для себя.Это будет работать одинаково хорошо.За дополнительную плату вы могли бы даже потенциально реализовать оба решения и сравнить и сопоставить их;)

0 голосов
/ 19 сентября 2011

Вы можете избежать перехода в новый тип объекта, выполнив следующие действия:

    List<String> ids = new ArrayList<String>();

    List<String> keys = new ArrayList<String>(HM1.keySet());
    List<Double> values = new ArrayList<Double>(HM1.values());

    keys.add(HM2.keySet());
    values.add(HM2.values());

    TreeSet<Double> sortedSet = new TreeSet<Double>(values);
    Object[] sortedArray = sortedSet.toArray();
    for (int i=0; i < sortedArray.length; i++){
        ids.add(keys.get(values.indexOf(sortedArray[i])));
    }

    return ids;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...