将<k,v =“”>映射到一个排序列表,每个对象都有属性K,V(反向排序的V)

时间:2018-01-29 21:17:22

标签: java sorting arraylist hashmap

在我以相反的顺序排序map<K, V>之后,我已经建立了V

如何使用排序列表创建属性为<Type>的列表K, V对象?

具体来说,我希望列表中的对象的Vs按排序顺序排列。以下内容未达到我预期的结果。

for (String key: map.keySet()) {
   for (int i = 0; i < weightedAves.length; i++) {
       if (map.get(key) == weightedAves[i]) {                   
               Rating rating = new Rating(key, weightedAves[i]);
               MovieRatings.add(rating);
       }
   }  
}

1 个答案:

答案 0 :(得分:0)

一个非常简单的解决方案是使用Streams。

map.entrySet().stream()
    .sorted(Collections.reverseOrder(Map.Entry.comparingByKey()))
    .forEach(e -> movieRatings.add(
        new Rating(e.getKey(), e.getValue())
    ));

否则,您可以按任意顺序简单地添加到列表中,并在添加项目后对列表进行排序。

map.forEach((key, val) -> {
    movieRatings.add(new Rating(key, val));
});
movieRatings.sort(...);

您可以通过创建Comparator来指定如何安排订单,以处理如何订购数据。