在HashMap中对值进行排序

时间:2011-09-19 18:08:54

标签: java sorting hashmap

你有两个哈希映射HM1和HM2,其中key = Id(long)value = timestamp。您需要提供一个程序来返回从两个哈希映射中合并的ID列表,以便根据它们的时间戳对它们进行排序。

我的解决方案: 一个。将对象时间戳和id包装在另一个对象中。根据对象的时间戳写一个比较器,对对象列表进行排序并返回id。

更聪明的方法吗?

2 个答案:

答案 0 :(得分:1)

听起来像是一个非常合理的方式去找我。您需要考虑两个地图中出现单个ID的情况,但除此之外,它听起来非常简单。

请注意,您不一定需要单独的外部比较器 - 您可以为自己创建新的类Comparable<T>。这同样有效。为了获得额外的功劳,你甚至可以实现两种解决方案,并对它们进行比较和对比;)

答案 1 :(得分:0)

您可以通过执行以下操作来避免换行到新的对象类型:

    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;