je dois trier une carte par des valeurs en utilisant la méthode triée sur la carte et d'expression lambda comme arguments, alors que la carte a une structure comme:Tri Java Carte par Liste des valeurs
Map<T,List<T>>=
Groovy = [Z, Y, X, D]
Java = [V, B, C, D, A, Z]
C++ = [G, J, H]
C# = [P, S, Q, V, D]
Scala = [A, D]
Ma méthode Sorted:
sorted(Map<T,List<T>> map,Comparator<Map<T,List<T>>> comp)
puis l'implémenter dans une autre fonction chargée de lire les données du fichier et de les mettre en correspondance. Ceci est ma méthode triée:
public Map<T,List<T>> sorted(Map<T,List<T>> map, Comparator<Map<T,List<T>>> comp){
List list = new LinkedList(map.entrySet());
Collections.sort(list, comp);
HashMap sortedHashMap = new LinkedHashMap();
for (Iterator it = list.iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
sortedHashMap.put(entry.getKey(), entry.getValue());
}
return sortedHashMap;
}
Et voilà comment je l'ai utilisé dans une autre méthode:
Comparator<Map<T,List<T>>> comp = new Comparator() {
public int compare(Object o1, Object o2) {
return ((Comparable) ((Map.Entry) (o1)).getValue())
.compareTo(((Map.Entry) (o2)).getValue());
}};
iniMap=sorted(iniMap,comp);
Quand je lance mon programme, j'obtiens l'erreur suivante:
java.lang.ClassCastException: java.util.LinkedList cannot be cast to java.lang.Comparable
Tous l'aide serait appréciée, je suis coincé.