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

Collection et Stream Java Discussion :

stocker des byte[] dans un HashSet ?


Sujet :

Collection et Stream Java

  1. #1
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut stocker des byte[] dans un HashSet ?
    Bonjour,

    Soit un tableau de 20 octets appelé tableauCombinatoire[20].

    Dans ces 20 octets sont générées différentes combinaisons de valeurs, par exemple:
    • tableauCombinatoire[0] = 5
    • tableauCombinatoire[1] = 3
    • .
    • .
    • tableauCombinatoire[19] = 93


    Puis, une autre combinaison est générée parmi les octets de ce tableau:
    • tableauCombinatoire[0] = 121
    • .
    • .
    • tableauCombinatoire[19] = 14


    Bref, vous voyez le principe.

    Je souhaiterais mémoriser chaque combinaison de 20 octets, dans un ensemble de stockage (un tableau à 2 dimensions, une ArrayList... peu importe)
    Mon problème est que parfois, certaines combinaisons générées existent déjà dans la structure de stockage et n'ont donc pas besoin d'y être ajoutées de nouveau.
    Il me faut donc faire un test de parcours de l'ensemble de la structure de stockage pour vérifier de ne pas y mettre un doublon.

    C'est là que je me suis dit que peut être un HashSet pourrait venir à mon secours, car possédant un système anti-collision.
    Sauf que tableauCombinatoire étant toujours physiquement le même tableau (il n'y a que son contenu qui change), lorsque je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monHashSetCombinatoire.add( tableauCombinatoire );
    celui-ci n'est mis qu'une fois dans le Set. Effectivement, il y a bien un système anti-collision... mais sur l'objet tableau, pas son contenu.

    Je ne voudrais pas réinventer la roue, mais existe-t-il en JAVA, un système qui répondrait à ce besoin:
    stocker des ensembles de 20 octets dans une structure, qui ne prendrait en compte un ajout que si la combinaison de 20 octets n'existe pas dans la structure ?

    PS: j'ai pensé un moment passer par une conversion des 20 octets en chaîne de caractères pour faire des objets différents à chaque fois... mais je ne trouve pas cela élégant (et probablement pas efficace)

    Merci
    @ bientôt...

    Salut & @+ sur 3W!

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    le plus simple serait un ByteBuffer, obtenu comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ByteByffer buffer = ByteBuffer.wrap(tableauCombinatoire);
    Mais attention, c'est un wrapping, les octets ne sont pas copiés dans le ByteBuffer, ils sont accédés par le ByteBuffer à l'intérieur du tableau donné. Il faut donc créer un nouveau tableau à chaque fois.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Merci beaucoup Thelvin.

    J'étais en train d'étudier cette piste.
    Effectivement comme tu le dis, il faut créer un nouvel objet à chaque fois, ce qui ne m'arrange pas.
    Je vais donc essayer de trouver une autre façon de gérer mon problème.

    Bonne continuation...
    @ bientôt...

    Salut & @+ sur 3W!

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

Discussions similaires

  1. Stocker des jpg dans un fichier
    Par jmjmjm dans le forum Langage
    Réponses: 6
    Dernier message: 10/11/2005, 22h07
  2. Comment stocker des images dans une base de données ?
    Par [Silk] dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/07/2005, 11h29
  3. Réponses: 2
    Dernier message: 15/06/2005, 17h32
  4. [XML] stocker des données dans un fichier XML
    Par R3iTt0R dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/05/2005, 16h51

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