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 :

Meilleur solution dans ces cas la?


Sujet :

Java

  1. #1
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut Meilleur solution dans ces cas la?
    Bonjour,
    Je voudrais savoir comment vous faites.
    C est assez facile mais je voudrais avoir la meilleure solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int[] p; // un tableau d entier ex: 0,1,0,2,0,2,3
    je veux mettre mon tableau dans un String d une maniere plus effective.
    Ce que je fais j itere mon tableau et je fais un append a mon String, il n y a pas autre chose plus rapide? c est couteux si c est un String, mais j utilise un StringBuilder en genral dans ce cas.

    Encore un autre cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<String> myList = new ArrayList<String>();
    je veux transformer myList en String[] newList; oui je peux faire myList.toArray() ca me retourne an Object[] mais est ce un cast (String[]) est propre? je ne sais pas pourquoi mais j aime pas ce genre de cast.

    Merci,

    H

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String str = p.toString();
    str = str.substring(1, str.length() - 1);
    2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.toArray(new String[0])

  3. #3
    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,

    Citation Envoyé par jhaythem Voir le message
    je veux transformer myList en String[] newList; oui je peux faire myList.toArray() ca me retourne an Object[] mais est ce un cast (String[]) est propre? je ne sais pas pourquoi mais j aime pas ce genre de cast.
    Un Object[] n'est pas forcément un String[], donc tu obtiendras une ClassCastException...

    Il faut utiliser toArray(T[]) pour obtenir le bon type, donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] array = myList.toArray(new String[myList.size()]);
    Si le tableau passé en paramètre n'est pas de la bonne taille, un nouveau tableau sera créé (attention à bien synchroniser le tout en cas d'utilisation multithreadé de la liste).



    Pour la première question je n'ai pas vraiment compris le problème


    a++


    [edit] Grillé

  4. #4
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    Citation Envoyé par natha Voir le message
    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String str = p.toString();
    str = str.substring(1, str.length() - 1);
    2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list.toArray(new String[0])
    1- sachant que p est un tableau d entier en fesant p.toString() ca va me retourner l adresse"1I@3e25a" de p pas les valeurs du tableau.

    2 Merci pour le tips je ne savais pas ca.

  5. #5
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    La 1 ere questions:
    J ai un tableau d entier int[] p ex: 0,2,34, 56
    je veux mettre toutes les valeurs de ce tableau dans une String str.
    Je veux pas iterer toutes les valeur de mon tableau p et ajouter p[i] a str a chaque fois.
    le p.toString() retourne l adresse de p[] pas les valeurs du tableau en une string.
    c est un peu plus clair maintenant?

  6. #6
    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
    Citation Envoyé par jhaythem Voir le message
    c est un peu plus clair maintenant?
    Oui, et tu as deux solutions :

    • Utiliser Arrays.toString(), qui te renvoi quelque chose du style "[0, 2, 34, 56]".
    • Te coder une méthode qui parcourt le tableau et génère la chaine au format voulu, par exemple :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      	public static String toString(int[] array, String beforeFirst, String afterLast, String separator) {
      		StringBuilder buffer = new StringBuilder(beforeFirst);
      		if (array.length>0) {
      			buffer.append(array[0]);
      			for (int i=1; i<array.length; i++) {
      				buffer.append(separator);
      				buffer.append(array[i]);
      			}
      		}
      		buffer.append(afterLast);
      		return buffer.toString();
      	}
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      // Pour avoir le même résultat que Arrays.toString() :
      toString(array, "[", "]", ", ");


    a++

  7. #7
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Ah oui, j'ai oublié le Arrays.toString().

    Ca donne donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String str = Arrays.toString(p);
    str = str.substring(1, str.length() - 1);
    Solution du flemmard !

  8. #8
    Membre chevronné Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Par défaut
    Petite remarque au passage, si le but était de gagner en performance, c'est peine perdu. (bien que ce sera dur de trouver une implémentation réellement plus performante que ce qui est fait par la méthode Array.toString)

    C'est la méthode Arrays.toString qui se chargera d'effectuer le parcourt du tableau.
    Ceci dit, ce n'est pas possible de réaliser ce genre de traitement sans parcourir le tableau.

    Si c'est pour une simplification de ton code, tu as maintenant la solution

  9. #9
    Membre expérimenté
    Inscrit en
    Juin 2003
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 292
    Par défaut
    Merci a tous, donc ce que je fais n est pas si moche que je le croyais

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

Discussions similaires

  1. dans quel cas une jointure nested loops est meilleur que hash join?
    Par M_Dandouna dans le forum Administration
    Réponses: 5
    Dernier message: 08/09/2009, 16h46
  2. Meilleure solution pour des unit tests? (dans mon cas)
    Par nicdo77 dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 19/08/2007, 20h32
  3. la meilleure solution pour centrer un div contenu dans un autre div ?
    Par Acid-dev dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/01/2007, 11h00
  4. [Java] Quel solution pour créer un fichier XML dans mon cas?
    Par petozak dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 23/08/2006, 13h10

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