CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JAVA] Trier un tableau d'objet

SalutOnBaise
SalutOnBaise
Niveau 7
10 novembre 2016 à 13:12:25

Bonjour, je souhaite faire un selection sort en Java sur un tableau d'objet passé en paramètre. Le problème c'est que l'objet en question n'implémente pas forcément Comparable, donc je ne peux pas utiliser compareTo(), et si j'utilise l'opérateur < ou >, j'ai cette erreur :

The operator > is undefined for the argument type(s) java.lang.Object, java.lang.Object

Donc j'aimerais savoir comment comparer deux objets de type Object ?

LGV
LGV
Niveau 28
10 novembre 2016 à 14:52:10

l'objet en question n'implémente pas forcément Comparable

Bah il faudra bien definir quel(s) critere(s) tu veux utiliser pour comparer les objets ; sinon c'est totalement arbitraire et on ne peut pas definir d'ordre.

Ca veut dire quoi "A > B" ? A a plus de champs de type string ? A a une serialisation plus longue ? A a un hash md5 plus grand ? A occupe plus de place en memoire ? Ca peut vouloir dire n'importe quoi

-mimicicu-
-mimicicu-
Niveau 10
10 novembre 2016 à 14:55:03

C'est quoi comme objets ?
Tu as un tableau rempli de Objects ou bien d'une classe que tu as faite qui dérive de Object ?

Jean-Esclave
Jean-Esclave
Niveau 10
10 novembre 2016 à 20:58:29

S'il s'agit d'une classe définie, tu peux utiliser un comparator :

Arrays.sort(arrayOfMyClass, new Comparator<MyClass>(){
   @Override
   public int compare(final MyClass myClass1, MyClass myClass2) {
     //TODO return 1
     //     return -1
     //     return 0
     }
 });

Sachant qu'une bonne pratique est d'externaliser le classe Comparator dans une autre fichier...
De cette façon, ton objet en question (MyClass dans mon exemple) n'a pas besoin d'implémenter Comparable.

Message édité le 10 novembre 2016 à 21:00:50 par Jean-Esclave
Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment