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 :

concat à une liste


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Par défaut concat à une liste
    Bonjour;
    j'arrive a récupere une liste de plus de 10000 Fichiers mais sans le path (ma liste est de type String[])

    et je connais le path du coup je voudrais concaténer a toute la lise ce path avec une fonction qui n'allourdi pas trop l'execution.

    exemple :
    je recupére
    Fichier1
    Fichier2
    Fichier3
    Fichier4

    et je voudrais avoir :
    path/Fichier1
    path/Fichier2
    path/Fichier3
    path/Fichier4

    voila en vous remerciant

  2. #2
    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
    tu fait un boucle sur l'ensemble des élément, tu fait la concaténation (opérateur +) et tu remet dans le tableau à la même position.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    Salut,

    Je ne vois pas vraiment d'autres moyens que de faire une boucle sur ta liste...
    Si tu n'as pas besoin que tous les éléments soient préfixés du path, on peut essayer d'optimiser le parcours.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut
    Est-ce que la bonne idée est vraiment celle-là ?

    Tu possèdes un tableau de 10000 entrée de type String, tel que:

    {
    "String 1",
    "String 2",
    ....
    "String 10000"
    }


    Une valeur de ce tableau est utilisée en y ajoutant un autre chaîne dont la valeur est constante:

    "C:\\My Folder 1\\My Folder 1.1\\My Folder 1.1.1\\"

    Est-il vraiment nécessaire de créer le tableau:

    {
    "C:\\My Folder 1\\My Folder 1.1\\My Folder 1.1.1\\String 1",
    "C:\\My Folder 1\\My Folder 1.1\\My Folder 1.1.1\\String 2",
    ....
    "C:\\My Folder 1\\My Folder 1.1\\My Folder 1.1.1\\String 10000"
    }


    qui est évidemment beaucoup plus consommateur de mémoire ?

    Un objet enveloppe du tableau en question avec une méthode elementAt(int index) : String qui retourne la chaîne de caractères sous sa forme utilisable, comme dans:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String elementAt(int index) {
        return "C:\\My Folder 1\\My Folder 1.1\\My Folder 1.1.1\\" + _value[index];
    }
    serait peut être plus intéressant ?

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Par défaut
    re Bonjour
    merci pour vos réponse.
    effectivement je fait une boucle avec l'oprateur "+" pour concatener mais moi je me demandé si yavais un autre moyen plus performant sachant que dans ma liste ya plus de 10 000 entrée.

    le return ne m'aidera pas enormément car je dois fournir à la sortie de ma méthode une liste de fichiers sur laquelle j'effectue d'autres taches.


    en tout cas merci

  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
    en même temps, 10.000 opération string, si tu dois le faire qu'une fois, je vois pas ou est la perte de performance. Evidement, si tu dois le faire 500 fois par secondes, faut commencer à s'inquiéter

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut
    le return ne m'aidera pas enormément car je dois fournir à la sortie de ma méthode une liste de fichiers sur laquelle j'effectue d'autres taches.
    Ce qui n'est pas incompatible de ce que je disais. Avec un objet adapté, tu peux faire les manipulations que tu veux et retourner le résultats final. En changeant la méthode elementAt(int) de tout à l'heure:

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    public class FileProcessor
        implements Iterable<<MON_TYPE_RESULTAT>> {
     
        /**
         * Chemin du dossier racine où sont localisés les fichiers
         * histoire de faire un peu configurable.
         */
        private String _pathname;
        private List<String> _elements = new ArrayList<String>();
     
        public FileProcessor(String pathname) {
            _pathname = pathname;
        }
     
        public void add(String element) {
            _elements.add(element);
        }
     
        public int elementCount() {
             return _elements.size();
        }
     
        public <MON_TYPE_RESULTAT> elementAt(int index) {
     
            File file = new File(_pathname  +  _elements.get(index));
            if (file.exists()) {
     
                // faire toutes les manipulations nécessaires avec file
                // et créer une instance de <MON_TYPE_RESULTAT> qui
                // répond au besoin
     
                return <MON_TYPE_RESULTAT>;
     
            } else
                return null; // Par exemple... ou alors throw new Exception, etc, etc...
     
        }
     
        public Iterator<<MON_TYPE_RESULTAT>> iterator() {
             return /*
                 une petite implémentation d'itérateur qui permet de parcourir
                 les éléments "calculés", ça sera très pratique pour manipuler
                 l'objet dans une boucle.
             */;
        }
     
    }
    en même temps, 10.000 opération string, si tu dois le faire qu'une fois, je vois pas ou est la perte de performance. Evidement, si tu dois le faire 500 fois par secondes, faut commencer à s'inquiéter
    Tout à fait d'accord, il n'y a aucun problème de performances avec une petite liste comme celle-là, raison de plus plus pour ne pas conserver les données concaténées en mémoire (dans ce domaine, il n'y a pas de petites économies). A plus forte raison si l'opération de concaténation n'est de toutes façons réalisée qu'une seule et unique fois, autant la faire uniquement au moment où elle est nécessaire.

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

Discussions similaires

  1. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11
  2. Faire une liste de device??
    Par jackjack dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2003, 14h43
  3. Réponses: 4
    Dernier message: 24/04/2003, 22h28
  4. Générer une liste
    Par pfredin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/04/2003, 15h30
  5. tri d'une liste
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 09/01/2003, 18h08

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