Avoir une Multimap triés sur les touches uniquement en Java

Je voudrais avoir un c.g.c.c.Multimap qui est triée en fonction des clés. Les valeurs ne devraient pas être triés. J'ai essayé de construire quelque chose avec la goyave est TreeMultimap, mais je ne peux pas l'utiliser parce que le type de la valeur n'est pas mise en œuvre Comparable.

public class MyObject /* doesn't implement Comparable */ {
  private String name;
  private int score;
  //Getters/setters are implemented
  public static Function<MyObject,Integer> myObjectToScore {
    @Override public Integer apply (MyObject o) { return o.score; }
  }
  public static Multimap<Integer,MyObject> indexOnScore(Iterable<MyObject> i) {
    Multimap<Integer,MyObject> m = Multimaps.index(i, myObjectToScore());
    //Do the sort of the keys.
    return m;
  }
}

J'ai pensé à un SortedSet des touches, puis en itérant sur chacune de ces touches dans l'ensemble trié pour récupérer les différentes valeurs, mais je m'attendais à l'aide d'un existant (encore inconnue) est une fonction de Goyave, plutôt que d'utiliser ce genre de hack.

Note: je ne vais pas faire MyObject mettre en œuvre Comparable parce qu'il n'a pas de sens avec mon objet réel.


Exemple d'entrée/sortie:

Set<MyObject> s = Sets.newHashSet(
  new MyObject("a", 2),
  new MyObject("b", 3),
  new MyObject("c", 1),
  new MyObject("d", 3),
  new MyObject("e", 1)
); //Assuming constructor MyObject(String name, int score)

for (Map.Entry<Integer, MyObject> e: MyObject.indexedOnScore(s).entries()) {
  System.out.printf("%d -> %s%n", e.getKey(), e.getValue().getName());
}

Imprime:

1 -> c //or switched with line below
1 -> e
2 -> a
3 -> b //or switched with line below
3 -> d