IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Min d'objets Comparable


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut Min d'objets Comparable
    Bonjour,

    j'ai écrit du code qui permet de renvoyer le minimum d'une suite d'Integer ou d'une suite de String.
    Ce que je voudrai, c'est écrire une méthode qui permet d'utiliser toute sorte d'objet Comparable Integer, String, ... mais je ne sais pas comment m'y prendre.
    Ce que j'ai codé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public class Min{
        public static Integer min(Integer... values) throws Exception{
    	if(values.length == 0)
    	    throw new Exception("aucun parametre n'a ete donne");
    	Integer min = values[0];
    	for(Integer val : values)
    	    if(min > val) min = val;
    	return min;
        }
     
         public static String min(String... values) throws Exception{
    	if(values.length == 0)
    	    throw new Exception("aucun parametre n'a ete donne");
    	String min = values[0];
    	for(String val : values)
    	    if(min.compareTo(val)>0) min = val;
    	return min;
        }
     
        public static void main(String [] args){
    	try{
    	    System.out.println(min(1,5,6));
    	    System.out.println(min(6,564,4));
    	    System.out.println(min("un","deux","trois"));
    	}catch(Exception e){
    	    System.out.println(e.getMessage());
    	}
        }
    }

  2. #2
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Salut, voilà un truc complétement à froid, le code n'est peut-être pas correct (je n'est pas eu le matériel pour tester), mais l'idée doit être là :

    MyComparable.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    package fr.nesmontou.test;
     
    public abstract class MyComparable implements Comparable {
     
    }
    Min.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    package fr.nesmontou.test;
     
    public class Min {
     
    	@SuppressWarnings("unchecked")
    	public static <T extends MyComparable> T min(T... args) throws Exception {
     
    		if(args.length == 0)
    		    throw new Exception("aucun parametre n'a ete donne");
    		T min = args[0];
    		for(T t : args)
    		    if(t.compareTo(min) > 0) min = t;
    		return min;
     
    	}
     
    }
    Donc, je n'ai pas pu tester le code mais l'idée doit être là, j'espère que ça pourra t'aider.

    Bon développement

  3. #3
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public class Min {
        public static <T extends Comparable<T>> T min(T... values) throws Exception{
    	if(values.length == 0)
    	    throw new Exception("aucun parametre n'a ete donne");
    	T min = values[0];
    	for(T val : values)
    	    if(val.compareTo(min) < 0) min = val;
    	return min;
        }
     
        public static void main(String [] args){
    		try{
    			System.out.println(min(1,5,6));
    			System.out.println(min(6,564,4));
    			System.out.println(min("un","deux","trois"));
    		}catch(Exception e){
    			System.out.println(e.getMessage());
    		}
    	}
    }

  4. #4
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Pourquoi pas tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static Comparable min(Comparable... values) throws Exception{
    	if(values.length == 0)
    	    throw new Exception("aucun parametre n'a ete donne");
    	Comparable min = values[0];
    	for(Comparable val : values)
    	    if(val.compareTo(min) < 0) min = val;
    	return min;
        }

  5. #5
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Cela fonctionne certes, mais normalement ton compilateur devrait te mettre un warning et tu peux faire l'appel suivant qui n'a pas trop de sens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    min("un", 2, 3.0);
    A noter que dans le cas de collections, la fonctionnalité existe déjà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(Collections.min(maCollection));
    et on pourrait dans ce cas s'y rattacher par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(Collections.min(Arrays.asList(1,5,6)));
    D'ailleurs en regardant la signature, on peut encore généraliser davantage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Collection d'objets comparables
    Par Akamura dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/10/2012, 17h14
  2. Réponses: 6
    Dernier message: 09/08/2006, 22h35
  3. Trier des objets sans Comparable
    Par Shabata dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 13/03/2006, 13h55
  4. [Collections][HashMap]Comparer les objets de la hashmap
    Par rvfranck dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 16/12/2005, 21h29
  5. Réponses: 3
    Dernier message: 28/10/2005, 01h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo