2010-05-23 7 views
2

Je voudrais commander une carte (A, Double) en fonction des valeurs.google collections commander sur les valeurs de la carte

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(); 

Comment puis-je créer une nouvelle SortedMap sur la base des résultats de commande ou un SortedSet sur la base map.keyset()?

+0

J'adorerais voir la réponse à cette question! – Amala

Répondre

0

Que pensez-vous de cela?

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(); 
Questions connexes