Méthode prenant en compte tous types de nombre.

Fermé
Jestiz_ Messages postés 34 Date d'inscription vendredi 31 août 2018 Statut Membre Dernière intervention 18 décembre 2018 - Modifié le 17 déc. 2018 à 22:41
Jestiz_ Messages postés 34 Date d'inscription vendredi 31 août 2018 Statut Membre Dernière intervention 18 décembre 2018 - 18 déc. 2018 à 15:13
Bonjour/Bonsoir,

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.
A voir également:

2 réponses

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
17 déc. 2018 à 23:33
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);
}
0
Jestiz_ Messages postés 34 Date d'inscription vendredi 31 août 2018 Statut Membre Dernière intervention 18 décembre 2018
Modifié le 18 déc. 2018 à 15:13
Merci beaucoup c'est vrai que j'ai pas pensé que ça venait de comparable :)
0