Question

Java Collections.max prend uniquement une collection d'un objet pouvant être trié. Cependant, comme la collection n'est pas nécessairement triée, je ne vois aucune raison de ne pas implémenter la même fonction max pour les types itérables

Existe-t-il une méthode max pour Iterable < T étend Comparable <? super T > dans la bibliothèque standard de Java?

Était-ce utile?

La solution

Collections.max a été introduit dans la version 1.2. Iterable a été introduit dans la version 1.5.

Il est rare d'avoir un Iterable qui n'est pas une Collection . Si vous le faites, sa mise en œuvre est simple (veillez à lire les spécifications). Si vous pensez qu’il est vraiment important de pouvoir soumettre un RFE à bugs.sun.com (ou voter s’il en existe déjà un.)

Autres conseils

Bien que Guava ne soit pas la bibliothèque standard de Java, il est suffisamment proche ...

E com.google.common.collect.Ordering # max (Iterable < E > iterable)

par exemple. T max = Ordering.natural (). max (myIterable);

La raison pour laquelle la bibliothèque standard ne l'implémente pas est peut-être parce que une collection doit être finie , mais un Iterable n'a pas besoin d'être - et, on peut le soutenir, il faut ne jamais accepter un Iterable si un non -terminating Iterable provoquerait une boucle pour votre code.

Hmm… non, il n'y en a pas. Si vous souhaitez utiliser Collections.max () , vous devez convertir votre Iterable dans un Collection , probablement en ajoutant tous les éléments dans un Liste (ou Définir , en fonction des données).

Par définition, les éléments de la collection doivent être "triables". (en particulier, ils doivent implémenter Comparable ) car, pour calculer le maximum, il doit être possible de déterminer si un élément est supérieur à un autre (ce qui correspond exactement à ce que signifie Comparable).

Le max () de la classe Collections contient essentiellement le type de signature que vous avez posté, elle doit donc correspondre à votre but.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top