10
votes

Conversion d'éléments d'une liste en chaîne

Je voudrais obtenir le texte de chaîne des éléments stockés dans une liste, disons Liste . Les méthodes toarray () et les méthodes de ToRray () sont-elles les meilleures options?


0 commentaires

8 Réponses :


6
votes

Oui, mais le faisant manuellement vous donne plus de contrôle: xxx

si vous n'avez pas remplacé la méthode tostring () ou ne voulez pas remplacer Vous pouvez utiliser car.getname () au lieu de voiture.tostring () (ou une combinaison de propriété que vous aimez)


0 commentaires

-4
votes
public class Car {

    private String carName;

    ....
    ....

    public String toString() {
        return carName;
    }
}

0 commentaires

8
votes

Il y a un Tostring statique (objet []) Méthode an Java.Util.arrays . L'appelant avec le toarray () résultat de la liste (comme vous l'avez suggéré) devrait faire le travail.


3 commentaires

Pourquoi ne pas simplement appeler Tostring () sur la liste directement?


@ADAMSKI: La liste d'interface ne définit pas un contrat pour Tostring ().


Il y a aussi deeptostring () si nécessaire



13
votes

Fournir que vous n'obposez pas à la sortie de la chaîne après la convention:

[A, B, C]


3 commentaires

Comment pouvez-vous être sûr que la sortie ressemblera à cela? La liste est juste une interface et il n'y a pas de contrat sur la sortie de la méthode ToString () dans la liste.


@Dominik: C'est un point juste, mais je devinerais que dans 99,9% des cas, les personnes ont tendance à utiliser les implémentations de la liste JDK, qui produisent ce style de production. J'ai tendance à utiliser cette sortie pour la journalisation de débogage, mais je ne voudrais jamais sur elle pour la logique de la présentation.


C'est la bonne approche iMho tel qu'il vient de AbstractCollection # Tostring Quelles implémentations devraient s'étendre de et les types de collecte dans le JDK le font.



19
votes

Une autre idée est d'utiliser le Apache Commons Lang pour écrire le code suivant: XXX

L'intérêt est que vous pouvez également fournir un séparateur, par exemple: xxx


0 commentaires

3
votes

Convertissez d'abord votre liste (collection) à un tableau et créez une chaîne de chaque élément.

Arrays.toString(myCollection.toArray());


0 commentaires

5
votes

Vous pouvez utiliser java 8 flux xxx

se référer javadoc sur Collectors Pour plus d'informations.


1 commentaires

J'ai posté quelques exemples supplémentaires de collectionneurs.Joining () dans une réponse séparée. C'était un peu beaucoup pour une édition! N'hésitez pas à copier ma réponse dans la vôtre afin que ce soit au même endroit, si vous le souhaitez. Je vais ensuite supprimer ma réponse.



2
votes

Je ne veux pas donner une réponse séparée de Hkbharath, qui est une bonne réponse, mais je veux donner plus d'exemples d'utilisation des flux Java 8. Les collectionneurs.Joining () a quelques variantes surchargées différentes.

Disons que le code dans son exemple: xxx

vous donne ceci: Ford, Honda, Buick < / p>

alors si vous n'avez pas besoin d'un délimiteur: xxx

vous donnerait à la place: FORDHONDABUICK

et voici un exemple prolongé montrer comment manipuler chaque chaîne, modifier le délimiteur et ajouter un préfixe et un suffixe: xxx

vous donnerait à la place: [Ford; Honda; Buick]


0 commentaires