你有两个哈希映射HM1和HM2,其中key = Id(long)value = timestamp。您需要提供一个程序来返回从两个哈希映射中合并的ID列表,以便根据它们的时间戳对它们进行排序。
我的解决方案: 一个。将对象时间戳和id包装在另一个对象中。根据对象的时间戳写一个比较器,对对象列表进行排序并返回id。
更聪明的方法吗?
答案 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;