236 votes

Java: Max/min valeur dans un tableau?

Il est trivial d'écrire une fonction pour déterminer le min/max de la valeur dans un tableau, tel que:

/**
 * 
 * @param chars
 * @return the max value in the array of chars
 */
private static int maxValue(char[] chars) {
	int max = chars[0];
	for (int ktr = 0; ktr < chars.length; ktr++) {
		if (chars[ktr] > max) {
			max = chars[ktr];
		}
	}
	return max;
}

mais n'est-ce pas déjà fait quelque part?

197voto

Michael Rutherfurd Points 4029

À l'aide de Communes Lang (convertir) + Collections (min/max)

import java.util.Arrays;
import java.util.Collections;

import org.apache.commons.lang.ArrayUtils;

public class MinMaxValue {

    public static void main(String[] args) {
        char[] a = {'3', '5', '1', '4', '2'};

        List b = Arrays.asList(ArrayUtils.toObject(a));

        System.out.println(Collections.min(b));
        System.out.println(Collections.max(b));
   }
}

Notez que Arrays.asList() encapsule le tableau sous-jacent, de sorte qu'il ne devrait pas être trop gourmande en mémoire et il ne devrait pas effectuer une copie sur les éléments du tableau.

61voto

Andrew McKinlay Points 901

Le Google Goyave bibliothèque a min et max des méthodes, dans ses Caractères, Entiers, Longs, etc. des classes.

De sorte que vous pouvez simplement utiliser:

Chars.min(myarray)

Aucune conversion n'est nécessaire et sans doute il est efficacement mise en œuvre.

26voto

Lubna_Nsour Points 31
import java.util.Arrays;

public class apples {

  public static void main(String[] args) {
    int a[] = {2,5,3,7,8};
    Arrays.sort(a);

     int min =a[0];
    System.out.println(min);
    int max= a[a.length-1];
    System.out.println(max);

  }

}

21voto

Bart Kiers Points 79069

Oui, c'est fait dans les Collections de la classe. Notez que vous aurez besoin de convertir votre primitif char tableau d'un Caractère[] manuellement.

Une courte démo:

import java.util.*;

public class Main {

    public static Character[] convert(char[] chars) {
        Character[] copy = new Character[chars.length];
        for(int i = 0; i < copy.length; i++) {
            copy[i] = Character.valueOf(chars[i]);
        }
        return copy;
    }

    public static void main(String[] args) {
        char[] a = {'3', '5', '1', '4', '2'};
        Character[] b = convert(a);
        System.out.println(Collections.max(Arrays.asList(b)));
    }
}

2voto

Christoph Points 64389

Voici une classe utilitaire fournissant min/max méthodes pour les types primitifs: Primitives.java

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X