Méthode prenant en compte tous types de nombre.
Jestiz_
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
Jestiz_ Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Jestiz_ Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Bonjour/Bonsoir,
Je vais aller droit au but, j'ai cette méthode :
Le problème est qu'elle ne fonctionne que pour les shorts. Sauf que dans mon programme j'en ai besoin pour des double, integer etc etc. Est-ce qu'il y a un moyen de la rendre plus générale ? Merci de vos réponses.
Je vais aller droit au but, j'ai cette méthode :
public static Stream<Entry<String, Short>> getTop(Map<String, Short> scores, final int amount) {
return scores.entrySet().parallelStream()
.sorted((a, b) -> -Short.compare(a.getValue(), b.getValue()))
.limit(amount);
}
Le problème est qu'elle ne fonctionne que pour les shorts. Sauf que dans mon programme j'en ai besoin pour des double, integer etc etc. Est-ce qu'il y a un moyen de la rendre plus générale ? Merci de vos réponses.
2 réponses
-
Bonjour,
Finalement de ton Short tu n'utilises que la méthode compare qui vient de l'interface Comparable, donc ton code peut s'étendre à n'importe quelle classe qui implémente Comparable.
public static <E extends Comparable<E>> Stream<Entry<String, E>> getTop(Map<String, E> scores, int amount) { return scores.entrySet().parallelStream().sorted(Comparator.comparing(Entry::getValue, Comparator.reverseOrder())).limit(amount); } -
Merci beaucoup c'est vrai que j'ai pas pensé que ça venait de comparable :)