maximale de l'élément dans un tableau en Java (Collections.max() pour entier tableaux int[])
Est-il quelque chose comme Collections.max
qui trouve la valeur maximale dans un tableau de tableaux réguliers dans le standard de java runtime library?
OriginalL'auteur | 2008-12-25
Vous devez vous connecter pour publier un commentaire.
Non, il n'y a pas de Tableaux.max ou un sosie, au moins dans la version 6 de Java.
Si vous regardez la signature et la mise en œuvre de Collections.max, il est tout à fait un usage intensif de type paramétré. En Java, générique tableaux sont problématiques pour dire le moins, alors peut-être il n'est donc pas une bonne idée de fournir un générique max la mise en œuvre pour les tableaux en Java, et de garder le focus sur (générique) des collections.
Edit: comme newacct souligne à juste titre, la utilisation du générique de tableaux n'est pas nécessairement plus problématique que l'utilisation de générique collections, donc j'ai édité le texte ci-dessus depuis l'origine, était erroné. Encore, le principal argument de "générique tableaux sont problématiques" est toujours valable, à mon avis, et des collections doit être privilégiée par rapport au type de référence des tableaux.
Si vous avez été la recherche pour "plain ol' integer max", la première ligne de ma réponse, celle qui commence par "Non", est applicable. Si vous demandez: "est-il quelque chose comme des Collections.max" je pense qu'il est approprié de mentionner cette méthode, ses genericity et les implications pour les tableaux à une réponse.
Il n'y a rien de plus "problématique" à propos de via générique tableaux que les autres génériques collections. Le code que vous avez posté ci-dessus est équivalente à: public static <T> T max(T[] arr, Comparateur de<? super T> comp) { T candidat = arr[0]; for (int i = 1; i < arr.longueur; i++) { T next = arr[i]; if (comp.comparer(à côté, le candidat) > 0) candidat = suivant; } return candidat; }
Merci pour le commentaire. Vous avez absolument raison, et j'ai mis à jour la réponse.
Vous devriez jeter un explicite NoSuchElementException si la collecte/le tableau est vide ou nulle.
OriginalL'auteur eljenso
Si vous avez un tableau d'Objets que vous pouvez utiliser
Si vous avez un tableau de primitif, vous pouvez utiliser une simple boucle.
OriginalL'auteur Peter Lawrey
Vous pouvez utiliser Les tableaux de.trier(int[]) et ensuite accéder à la première (ou la dernière) de l'élément. Ou vous pouvez simplement parcourir le tableau et regardez pour le plus grand/plus grand élément. C'est en fait un no-brainer.
OriginalL'auteur Bombe
Vous pouvez également créer un décorateur pour Collection qui contient des méthodes supplémentaires comme getMaximumValue() et en faire la mise à jour de la valeur renvoyée chaque fois que l'élément est ajouté/supprimé si il y a besoin.
Cela n'a de sens que si vous souhaitez utiliser la valeur maximale d'un lot dans votre programme, ce qui signifie que parcourant la liste de tous les temps serait la cause d'une surcharge importante.
OriginalL'auteur Esko
Pour autant que je sache, non. Vous pourriez regarder asList (http://java.sun.com/j2se/1.5.0/docs/api/java/util/Arrays.html#asList(T...)), mais c'est probablement pas la peine.
Les tableaux de.asList sur int[] sera effectivement vous donner une Liste<int[]> contenant un seul élément. Il pourrait être surchargé pour les primitives, mais qui conduirait à d'autres problèmes.
OriginalL'auteur Matthew Flaschen