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 :

Manipulation des ArrayList


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Par défaut Manipulation des ArrayList
    Bonjour à tous,

    je suis débutant en java et j'ai un peu de mal à manipuler les ArrayList, je cherche à affecter a 3 ArrayList les valeurs retournées par la méthode StringTokenizer(qui permet de découper une chaine de String en fonction des espaces qu'elle contient).
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    package paquet;
     
    import java.util.StringTokenizer;
    import java.util.ArrayList;
    public class Rrrr {
     
     
    	ArrayList<String> positionDebut = new ArrayList<String>();
    	ArrayList<String> positionFin = new ArrayList<String>();
    	ArrayList<String> Fin = new ArrayList<String>();
     
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
     
    		StringTokenizer st = new StringTokenizer("53 130 + [-27.3] ((((.(.(((((((.((..((((.........(((..(((....))).)))...))))..)).))))))).)..))))");
    		while (st.hasMoreTokens()) {
    		 System.out.println(st.nextToken());
    		}
     
     
     
     
     
     
    		// TODO Auto-generated method stub
     
    	}
     
    }
    Le Résultat de la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    53
    130
    +
    [-27.3]
    ((((.(.(((((((.((..((((.........(((..(((....))).)))...))))..)).))))))).)..))))

    Je voudrais affecté le premier chiffre dans ma première Arraylist (entre autres) mais je ne sais pas comment manipuler la méthode StringTokenizer pour réaliser l'affectation
    Je voudrais mettre 53 dans positionDebut, 130 dans positionFin et le dernier motif composé de parenthèses dans fin.

  2. #2
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Dans ta boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    positionDebut.add(st.nextToken());

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Par défaut
    Merci pour ta réponse, à quel niveau plus précisément devrais-je l'insérer ? pour la première position j'avais pensé faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public static void main(String[] args) {
     
    		StringTokenizer st = new StringTokenizer("53 130 + [-27.3] ((((.(.(((((((.((..((((.........(((..(((....))).)))...))))..)).))))))).)..))))");
    		while (st.hasMoreTokens()) {
    		positionDebut.add(st.nextToken());
    		 System.out.println(st.nextToken());
    		}
    Mais la console me renvoie "cannot make a static reference to the non static field positionDebut"

    Pour le second élement il faudrait que je mette ma ligne de code apres le premier st.nnextToken(); ? et pour le dernier bah à la fin ? je suis un peu perdu

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 17
    Par défaut
    Bonjour, si tu connais à l'avance le séparateur de champs utilisé dans ta string, tu peux aussi faire de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    String str = "53 130 + [-27.3] ((((.(.(((((((.((..((((.........(((..(((....))).)))...))))..)).))))))).)..))))"; // la string à parser
     
    String[] tokens = str.split(" ");
    if (tokens.length >= 3) {
        positionDebut.add(tokens[0]);
        positionFin.add(tokens[1]);
        fin.add(tokens[tokens.length - 1];
    }
    Avec un StringTokenizer, c'est un peu moins pratique (tu dois affecter st.nextToken() dans positionDebut, st.nextToken() dans positionFin, puis sauter les valeurs intermédiaires et récupèrer le dernier token, en n'oubliant pas de faire la vérification hasMoreTokens() à chaque fois).

    Ah oui aussi, dans ta méthode main, tu ne peux pas faire référence aux attributs non static de ta classe. Soit tu utilise une instance de ta classe dans ton main, soit tu déclare tes attributs static.

  5. #5
    Membre expérimenté Avatar de ZnhaarX
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Par défaut
    En passant je rebondis sur ton implémentation des ArrayList.
    Petit conseil, essayes d'utiliser les interfaces (s'il y en as) pour déclarer ton objet, et la classe concrète (ici ArrayList) pour l'implémenter.

    Par exemple pour l'ArrayList tu as dans l'api java:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class ArrayList<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, Serializable
    Le implements t'indique qu'une interface est utilisée.
    Donc pour que ton code soit plus propre, et plus facilement maintenable, au lieu de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList<String> positionDebut = new ArrayList<String>();
    il vaut mieux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<String> positionDebut = new ArrayList<String>();
    Bonne chance

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Par défaut
    Merci beaucoup ça fonctionne


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<String> positionDebut = new ArrayList<String>();
    j'étudie tout ça (c''est encore un peu flou mais je vais le travailler), lorsque j'essaie de définir on ArrayList ainsi Eclipse me renvoie :

    "The type list is not a generic, it cannot be parameterized with arguments 'String'"

    Je dois définir quelque chose en amont pour qu'il accepte les chaines de caractère en arguments ?

Discussions similaires

  1. [IB6][BCB5]Manipulation des dates.
    Par Sitting Bull dans le forum SQL
    Réponses: 4
    Dernier message: 09/04/2004, 15h33
  2. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 11h40
  3. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 11h46
  4. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 18h51
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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