Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dictionnaire hasmap

    5 février 2010 à 19:26:47

    Bonjour !! je fais une dictionnaire français anglais jusque là pas trop de problème quand j'utilise de truc basique
    mais ici je veux mettre du hashmap en place mais je ne vois vraiment pas comment faire le code avec!!! Donc je viens demander de l'aide!!et le tutorial ne m'aide pas beaucoup ^^
    Merci d'avance
    Class mot
    public class Mot {
    
    private String anglais;
    
    private String francais;
    
    //
    // CONSTRUCTORS
    //
    
    public Mot() {
    }
    
    public Mot(String anglais, String francais) {
    this.anglais = anglais;
    this.francais = francais;
    }
    
    //
    // SETS
    //
    
    public void setAnglais(String anglais) {
    this.anglais = anglais;
    }
    
    public void setFrancais(String francais) {
    this.francais = francais;
    }
    
    //
    // GETS
    //
    
    public String getAnglais() {
    return anglais;
    }
    
    public String getFrancais() {
    return francais;
    }
    
    public String toString(Object o) {
    return o.toString();
    }
    
    
    public String toString() {
    return anglais + ": " + francais;
    }
    
    }
    


    class dictionnaire
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    
    
    public class Dictionnaire extends Mot {
    
    private List<Mot> tab;
    
    //
    // CONSTRUCTORS
    //
    
    public Dictionnaire() {
    tab = new ArrayList<Mot>();
    System.out.println("Création d'un objet Dictionnaire\n");
    }
    
    //
    // SETS
    //
    
    public void ajout(String anglais, String francais) {
    Mot mot = new Mot();
    mot.setAnglais(anglais);
    mot.setFrancais(francais);
    tab.add(mot);
    }
    
    public void triAnglais() {
    Collections.sort(tab, new Comparator<Mot>() {
    public int compare(Mot m1, Mot m2) {
    if (m1 != null && m2 != null) {
    String s1 = m1.getAnglais();
    String s2 = m2.getAnglais();
    if (s1 != null) {
    return s1.compareTo(s2);
    }
    }
    return -1;
    }
    });
    affiche();
    }
    
    public void triFrancais() {
    Collections.sort(tab, new Comparator<Mot>() {
    public int compare(Mot m1, Mot m2) {
    if (m1 != null && m2 != null) {
    String s1 = m1.getFrancais();
    String s2 = m2.getFrancais();
    if (s1 != null) {
    return s1.compareTo(s2);
    }
    }
    return -1;
    }
    });
    affiche();
    }
    
    public void rechercheFrancais() {
    // TODO : nothing ?
    }
    
    public void rechercheAnglais() {
    // TODO : nothing ?
    }
    
    public void affiche() {
    for (int i = 0; i < tab.size(); i++) {
    System.out.println(toString(tab.get(i)));
    }
    System.out.println();
    }
    }
    

    class main
    import java.util.*;
    
    
    public class Main {
    
    public static void main(String [] args){
    
    Dictionnaire dico = new Dictionnaire();
    
    dico.ajout("sun","soleil");
    dico.ajout("chiken","poulet");
    dico.ajout("mouse","souris");
    dico.ajout("rabbit","lapin");
    dico.ajout("hello","coucou");
    
    //tri sur l'anglais + affichage.
    
    dico.triAnglais();
    
    //tri sur le francais + affichage
    
    dico.triFrancais();
    
    }
    
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      6 février 2010 à 0:21:05

      Pourquoi Dictionnaire étant mot ? un dictionaire est un mot (on pourrai dire oui, mais pas dans l'optique du sens dictionnaire que tu veux)
      A quoi von te servir les champs anglais et francais héritée de la classe mot ?
      La conception du projet n'est pas bonne : tu doit revoir tout ça.
      • Partager sur Facebook
      • Partager sur Twitter
        6 février 2010 à 12:24:40

        oui certainement mais moi je fais se que le prof demande donc je fais dictionnaire extends mot
        • Partager sur Facebook
        • Partager sur Twitter
          6 février 2010 à 13:58:45

          Au lieu de créer la classe Mot, tu crées dans la classe Dictionnaire un attribut de type HashMap dont la clé sera le mot en français et la valeur le mot en anglais correspondant. Tu n'oublies pas de supprimer l'attribut de type ArrayList car ici il ne te servira a rien.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            6 février 2010 à 15:55:17

            Citation : juju0612

            oui certainement mais moi je fais se que le prof demande donc je fais dictionnaire extends mot



            faudra dire à ton prof de revoir ses notes sur l'héritage et les liens sémantiques:

            ici un bon petit article assez simple à comprendre: http://gfx.developpez.com/tutoriel/java/composition/
            • Partager sur Facebook
            • Partager sur Twitter
              6 février 2010 à 16:11:09

              Je suis évidemment d'accord avec vous sur le soucis de logique dans l'héritage, mais si on ne s'arrête pas aux noms des classes, quand on voit la composition de la classe Mot, perso j'arrive à accepter à accepter que Dictionnaire ait tous ces attributs/méthodes.

              Enfin ce n'est pas ce qu'il y'a de plus logique et la composition serait à préférer à l'héritage je suis d'accord.
              • Partager sur Facebook
              • Partager sur Twitter

              Dictionnaire hasmap

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown