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   -
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.

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  2. Jestiz_ Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci beaucoup c'est vrai que j'ai pas pensé que ça venait de comparable :)
    0