2010-05-23 93 views
2

我想订购一个基于值的地图(A,双)。谷歌收藏订购地图价值

Function<Map.Entry<A, Double>, Double> getSimFunction = new Function<Map.Entry<A, Double>, Double>() { 
     public Double apply(Map.Entry<A, Double> entry) { 
      return entry.getValue(); 
     } 
    }; 

    final Ordering<Map.Entry<A, Double>> entryOrdering = Ordering.natural().onResultOf(getSimFunction); 
    ImmutableSortedMap.orderedBy(entryOrdering).putAll(....).build(); 

如何基于排序结果或基于map.keyset()的排序集创建新的sortedMap?

+0

很想看到这个答案! – Amala 2011-08-10 14:19:15

回答

0

这个怎么样?

ImmutableMap.Builder<A, Double> builder = ImmutableMap.builder(); 
for (Map.Entry<A, Double> entry : entryOrdering.sortedCopy(unsortedMap.entrySet())) { 
    builder.put(entry.getKey(), entry.getValue()); 
} 
ImmutableMap<A,Double> sortedMap = builder.build();