[java] aide pour structurer une fonction

aide pour structurer une fonction [java] - Java - Programmation

Marsh Posté le 08-10-2003 à 05:07:52    

Bonjour à tous, voici ma question :
 
J'ai un bout de code (voir plus bas) qui parcours un tableau d'objet (Album) et qui le tri par nom d'artiste.(je sais que y'a bcp d'autres façons qui sont mieux que celle-ci, mais pour le besoin du cours, je dois le faire de cette façon)
 
Mon problème, c'est que je dois également trouver l'album qui a la durée la plus petite et presque le même code.
 
Comment pourrais-je procéder pour ne pas dupliquer mon code tout en séparant les 2 fonctions ?  
 

Code :
  1. public void trier() {
  2.    for (int i = 0 ; i < nbAlbum-1 ; i++) {
  3.    int indMin = i ;
  4.    for (int j = i+1; j < nbAlbum ; j++)
  5.     if (disques[j].getArtiste().compareToIgnoreCase(disques[indMin].getArtiste()) < 0)
  6.      indMin = j ;
  7.   
  8.      if (indMin != i) {
  9.                        
  10.       Album tempo = new Album();
  11.       tempo = disques[i];                       
  12.       disques[i] = disques[indMin];
  13.       disques[indMin] = tempo;
  14.                                    
  15.      }
  16.   }
  17.  }


 
 
Si vous avez des questions, n'hésitez pas !

Reply

Marsh Posté le 08-10-2003 à 05:07:52   

Reply

Marsh Posté le 08-10-2003 à 08:39:04    

Code :
  1. import java.util.*;
  2. ...
  3. public void trierParArtiste() {
  4.    Arrays.sort(disques, DisqueByArtisteOrder .INSTANCE);
  5. }
  6. public void trierParDuree() {
  7.    Arrays.sort(disques, DisqueByDureeOrder.INSTANCE);
  8. }
  9. public static class DisqueByArtisteOrder implements Comparator {
  10.    public static final DisqueByArtisteOrder INSTANCE = new DisqueByArtisteOrder();
  11.    public int compare(Object o1, Object o2) {
  12.       return String.CASE_INSENSITIVE_ORDER(((Disque) o1).getArtiste(), ((Disque) o2).getArtiste());
  13.    }
  14. }
  15. public static class DisqueByDureeOrder implements Comparator {
  16.    public static final DisqueByDureeOrder INSTANCE = new DisqueByDureeOrder();
  17.    public int compare(Object o1, Object o2) {
  18.       return (int) (((Disque) o1).getDuree() - ((Disque) o2).getDuree());
  19.    }
  20. }


Message édité par benou le 08-10-2003 à 08:42:19

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-10-2003 à 08:41:55    

un point pour benou svp :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-10-2003 à 08:43:24    

DarkLord a écrit :

un point pour benou svp :o


:)
 
tiens, toi qui est là, tu vois une raison pour laquelle dans Arrays, y a pas la méthode min et max qu'il y a dans Collections ? snul  :sweat:


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-10-2003 à 14:00:46    

benou, pq tu passes une instance statique et pas une instance fraiche?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-10-2003 à 14:09:57    

ben parce que ca sert à rien de créer un objet à chaque trie alors qu'on peut tous les faire avec le même ...
si j'avais eu le courage j'aurais ajouté un constructeur private à mes Comparator ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-10-2003 à 14:12:07    

tu te harkoises? :fouyaya:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-10-2003 à 14:14:40    


[:totoz]
 
c'est juste que j'aime pas faire des new pour rien [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-10-2003 à 14:21:05    

ouais, je trouve pas ça super clean comme ça moi mais bon :o
(surtout pour un exemple ou le gars va sans doute recopier ton truc sans savoir qu'il y a 500 autres possibilités pour ne pas faire un new par exemple...)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-10-2003 à 14:22:23    

ben c'est dans le même esprit que le CASE_INSENSITIVE_ORDER de String [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-10-2003 à 14:22:23   

Reply

Marsh Posté le 08-10-2003 à 14:23:25    

jconnais pas mais j'aime déjà pas [:nofret]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-10-2003 à 14:28:01    

the real moins moins a écrit :

jconnais pas mais j'aime déjà pas [:nofret]


 :pfff:  
je vois vraiment pas le problème ...
c'est juste un singleton


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-10-2003 à 14:30:33    

oui, justement :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-10-2003 à 15:20:26    


qu'est ce que tu as contre les signletons ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-10-2003 à 15:22:07    

c'est moche :o
 
 
(:whistle:)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-10-2003 à 15:22:17    

:o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-10-2003 à 17:00:29    

Ah, on a dû l'élever au static mode. :D


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 08-10-2003 à 20:43:59    

C'est vrai que c'est une question que je me pose souvent : où faire un singleton, et où faire une classe dont je sais très bien que je n'utiliserai qu'une instance à la fois. Par exemple pour tout ce qui est GUI, je me dis souvent que je pourrais auss bien faire que des singletons et ca serait pareil ; juste un peu plus chiant à développer.

Reply

Marsh Posté le 09-10-2003 à 03:27:07    

Merci beaucoup je m'attendais pas à avoir du code tout fait !
 
Je vais le garder pour mieux comprendre, mais comme c'est le 1ier tp d'un cours intermédiaire, je crois pas que le prof va penser que ça viens de moi :)  
 
Mais merci quand même, ton code ma donné une bonne idée :)

Reply

Marsh Posté le 09-10-2003 à 12:07:29    

[:heink] Le pseudou premier post et le pseudo affiché sur la première page ne sont pas écrits pareil... jocebug ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed