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

Langage Java Discussion :

comment stocker et extraire des Entiers dans un String sans séparateurs ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Par défaut comment stocker et extraire des Entiers dans un String sans séparateurs ?
    Bonjour,

    Je souhaite stocker une série d'entiers sous forme de String sans séparateurs.

    exemple :
    un String S; qui contienne les 3 entiers suivants: 5, 12 et 3 sous cette forme: "5123".
    Il faudrait pouvoir les extraire après sans substring ni séparateur.
    "5123" ==> 5 12 3
    "45891"==> 4 589 1


    Y a t-il un moyen pour le faire (sachant qu'un String est un tableau de caractère) ?

    Merci.

    PS: J'en ai besoin pour stocker ces String(qui contiennent un série d'entiers) dans une "liste de String" qui contient des milliers d'éléments. Je veux accéder directement aux entiers (sans substring ni séarateur) pour accélérer le temps d'accès.

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 697
    Par défaut
    S'il n'y a pas de séparateur, on ne pourra jamais savoir si "5123" correspond à 5,12,3 ou 51,2,3 ou 5,1,23. Il faut soit un séparateur, soit connaire la taille de chacun des nombres.
    On pourrait utiliser une liste qui indique la taille de chaque chaine, mais je ne pense pas que les performances soient bien meilleures ainsi et il faudra de toute façon recourir au substring.

    D'ou viens cette liste? comment doit elle être utilisée? Un moyen de gagner en vitesse serait d'économiser la conversion string-entier en stoquant le nombre directement en binaire.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Par défaut
    Citation Envoyé par Uther Voir le message
    D'ou viens cette liste? comment doit elle être utilisée? Un moyen de gagner en vitesse serait d'économiser la conversion string-entier en stoquant le nombre directement en binaire.
    Non, en binaire ça ne convient pas au problème.
    Au fait, c'est super simple !
    Je lis une Table de faits en .CSV(base de données):
    Exemple: Table de Faits ( ici, nombre d'attributs =3 et nombre de lignes = 5)
    A B C
    5 1 3
    5 1 3
    5 1 4
    0 1 5
    0 0 5


    Je dois stocker les lignes (Sans doublons !) dans une structure de données.
    Voici la table à stocker : Taille = 4
    5 1 3
    5 1 4
    0 1 5
    0 0 5

    ----------------
    Voilà. (Bien sur en pratique il y aura des milliers de lignes)
    Et comme je lis le fichier en format .CSV. J'ai opté pour le String Tokenizer plutot que Substring (je ne sais pas si j'ai bien fait).
    Donc un Token contient 1 String représentant une valeur de la ligne. Bon je peux le convertir bien sur.

    Selon moi, l'idéal serait de stocker le cuboide de base dans une ArrayList : {5 1 3, 5 1 4, 0 1 5, 0 0 5} Mais quel objet dedans ???

    L'objet serait Soit :
    - un tableau de String
    - un tableau d'entiers.
    - une Liste de String (ce qui ferait une liste dans une liste)
    - un Liste d'entiers (même remarque préc.)
    - un Tableau de caractères = Un String !! <--- ce qui me semble être le plus léger, Mais comme vous me dites que c'est impossible sans séparateur, j'oublie




    >Enfin voilà, ce sera donc une Liste de quoi selon vous ?! Sachant que la vitesse est primordiale

    Merci.

    PS: Mais comme je connais à l'avance le taille de l'objet à stocker et que cette taille est fixe ( notre exemple: taille = nbre d'attributs = 3), je suis tenté d'utiliser un tableau plutot qu'une Liste.

  4. #4
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Si tu as juste à stocker les lignes différentes il ne me semble que tu peux simplement lire ton csv avec un BufferedReader (et sa méthode readLine()) et ensuite stocker toute la ligne en une seul String dans un Set.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Par défaut
    Citation Envoyé par Heimdal Voir le message
    Si tu as juste à stocker les lignes différentes il ne me semble que tu peux simplement lire ton csv avec un BufferedReader (et sa méthode readLine()) et ensuite stocker toute la ligne en une seul String dans un Set.
    Un Set, pourquoi pas une Liste c'est plus rapide non ?

    Je fais la lecture comme tu dis.
    Si c'est un String ça sera avec un séparateur. Donc il faudra le parcourir avec un SubString ou un Tokenizer ce qui est lourd non ? Surtout que je dois faire des millions de calcul sur cette table en accédant aux données de chaque String.

    Au fait le temps de calcul est au coeur de ce projet.

  6. #6
    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
    Citation Envoyé par NeoGeoo Voir le message
    Un Set, pourquoi pas une Liste c'est plus rapide non ?
    Un set garanti l'absence de doublon. Quand aux performances, si c'est critique, stocke chaque ligne sous la forme char[] plutot que String, rechercher la position des séparateurs est proportionnel à la longueur de la chaine (O(n))

Discussions similaires

  1. Comment stocker des entiers dans un tableau ?
    Par ING KAM dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 04/07/2015, 13h55
  2. Comment stocker,et accéder à des BLOB Dans DB Sqlserver ?
    Par Meryjean dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 04/09/2010, 18h56
  3. Réponses: 6
    Dernier message: 10/10/2007, 23h26
  4. Stocker / Extraire des fichiers dans une base Access
    Par bryan_fury75 dans le forum Bases de données
    Réponses: 5
    Dernier message: 14/06/2006, 15h17
  5. Stocker des entiers dans Objects de TStrings
    Par Louis Griffont dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2006, 08h56

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