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

Java Discussion :

Inverser un hashCode


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de rockley
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 404
    Par défaut Inverser un hashCode
    Bonjour

    J'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String s = "toté";
    int sr = s.hashCode();
    System.out.println(sr);
    Ce qui donne 3566256.

    Peut-on inverser les choses.
    Passer 3566256 et obtenir toté ?

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Non ce n'est pas possible.
    Que veux-tu faire précisément ?


    a++

  3. #3
    Membre éclairé Avatar de rockley
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 404
    Par défaut
    C'est pour un moteur de recherche.

    Je dois stoker 3 valeurs.
    Nom du texte
    mot
    valeur pondéral ( nb d'itération du mot cherchée / nb de mots d'un texte).

    Dans mes bases, au lieu de stoker des string en trois colonne, ça donne
    hashcode de : Nom du texte
    hashcode de mot + valeur pondéral (>= 0 et < 1 (je vérifie que le texte n'est pas composé d'un même mot)).

    Donc je stocke un int et un double sur 2 colonnes. Aussi rapide à indexer qu'avec des String mais 10 fois plus rapide dans les recherches.

    Je voulais savoir si à partir des bases je pouvais retrouver les mots et faire des stat. par exemple.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Si tu as un index sur tes clefs, je pense que cela doit être aussi rapide avec les String.


    a++

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    et n'oublie pas de gérer les colissions de tes hash. Le hash est un moyen très rapide de trouver dans quel coin se trouve la donnée, mais il faut y ajouter la string complete pour retirer toute ambiguité. On associe à un String un hashcode, mais a un hashcode on associe une Liste de strings!

  6. #6
    Membre éclairé Avatar de rockley
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 404
    Par défaut
    mais a un hashcode on associe une Liste de strings!
    Et je suppose qu'on ne peux pas connaitre la liste de Strings.

    Pour info, le moteur de recherche ne comporte "que" les 260 000 mots de la langue française. Les doublons sur si peu de mots doivent être rare.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println(Integer.MAX_VALUE);
    =2.147.483.647
    Pour le moteur de recherche, il est en java, et la base de donnée, c'est hsqldb.
    Du coup on peut l'exécuter sur différent OS, et la BD est intégrée.
    Et pour que la DB reste de taille raisonnable, je préfère stoker des Int et Double, car ça prend moi de place.

    Je voulais faire un truc petit, puissant et multi-plateforme.

  7. #7
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Par défaut
    Bonjour,

    Non tu ne peux pas. C'est le principe d'une fonction hash, ce qu'elle n'est qu'à une seule direction (ou surjective pour reprendre le vocabulaire mathématique).

    D'ailleurs tu peux théoriquement avoir plusieurs String qui auront pour hashCode 3566256. Et c'est logique puisque tu peux avoir beaucoup plus de String différentes que de valeurs de int en Java.

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

Discussions similaires

  1. inverser l'écran
    Par relax_06 dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/03/2004, 12h20
  2. inverser la lecture d'une requète
    Par nilaco dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/08/2003, 12h16
  3. [VB6] [Graphisme] Inversion dans picturebox
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 16/04/2003, 15h05
  4. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09
  5. [VB6]fonction inverse de Hex (nombres hexadécimaux)
    Par Guigui_ dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/10/2002, 19h31

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