convertir ArrayList.toString() retour à la liste de tableaux en un seul appel
J'ai un toString()
représentation d'un ArrayList
.
La copie de la toString()
de la valeur dans le presse-papiers, je veux la copier dans mon IDE de l'éditeur, et de créer les ArrayList
instance dans une ligne. En fait, ce que je suis vraiment en train de faire est ceci:
- mon ArrayList.toString() a données dont j'ai besoin pour l'installation d'une unité de test.
- Je veux copier cette liste de tableaux.toString() dans mon éditeur pour construire un test à l'encontre de ce cas limite
- Je ne veux pas analyser quoi que ce soit par la main
Mon entrée ressemble à ceci:
[15.82, 15.870000000000001, 15.92, 16.32, 16.32, 16.32, 16.32, 17.05, 17.05, 17.05, 17.05, 18.29, 18.29, 19.16]
Suivantes ne fonctionnent pas:
Arrays.asList()
- google collections
Lists.newArrayList()
Suggestions?
Pouvez-vous détailler pourquoi les Tableaux.asList(15.82, 15.870000000000001, 15.92, 16.32, 16.32, 16.32, 16.32, 17.05, 17.05, 17.05, 17.05, 18.29, 18.29, 19.16) n'était pas en mesure de vous fournir une liste correcte ?
j'ai choisi cette une de façon arbitraire. désolé, vous avez raison à ce sujet. mon cas de test liste a de chaînes de caractères: "[x,y,z]"
j'ai choisi cette une de façon arbitraire. désolé, vous avez raison à ce sujet. mon cas de test liste a de chaînes de caractères: "[x,y,z]"
OriginalL'auteur dotnetnewbie | 2010-05-05
Vous devez vous connecter pour publier un commentaire.
Substring les accolades loin, split sur
,
(la virgule et l'espace) et, enfin, donner àArrays#asList()
.Noter que cela fonctionne dans votre cas particulier, mais pas dans toutes les circonstances. Vous pouvez par exemple avoir une liste de chaînes de caractères, dont au moins un contient une ultérieure virgule et un espace. La scission serait alors un échec.
juste une question de préférence personnelle, mais je préfère ne pas analyser et comme le google splitter meilleure solution.
De votre choix. Je voulais juste prouver que . Vous avez notamment indiqué qu'il "ne fonctionne pas". Depuis que vous avez déjà donné la réponse à l'aide de Google Collections vous-même à l'avance, je n'ai pas envie de perdre du temps à les reproduire.
merci. juste pour préciser - je cherchais le chemin de moindre résistance et de la façon la plus rapide que j'ai juste besoin de données pour un test unitaire. je suis d'accord w/ analyse j'aurais pu le faire...mais je voulais vraiment comment puis-je copier ArrayList.toString() directement dans mon cas de test et de le faire travailler avec/ sans modification supplémentaire. j'ai ajouté mon google coll solution que je suis venu w/ une minute après l'affichage. merci encore une fois
Merci BalusC . Il a aidé beaucoup.
OriginalL'auteur BalusC
De manière générale, les
toString()
de tous les objets ne contient pas d'informations pour reproduire l'objet d'origine, sans aucune autre information.Dans votre cas particulier, l'exemple pourrait être produite par de nombreux
ArrayList
cas (ainsi que à peu près tous les autresList
des implémentations qui ont les mêmestoString()
) implémentations.Comme un exemple extrême, pensez à un
ArrayList
qui contient un seul élément qui est l'String
avec le contenu15.82, 15.870000000000001, 15.92, 16.32, 16.32, 16.32, 16.32, 17.05, 17.05, 17.05, 17.05, 18.29, 18.29, 19.16
. QueArrayList
produirait exactement le même résultat que l'original de votreArrayList
. Et depuis deux entrées donnent le même résultat, il n'y a pas moyen de cette fonction peut être inversé sans informations supplémentaires.Si, toutefois, nous avons des informations supplémentaires, telles que le type de contenu de l'original
ArrayList
, il devient alors possible dans certains cas. Si nous savons que tous les éléments de laList
étaient de typeDouble
, puis c'est en fait assez facile:Accordée, ce n'est pas un one-liner, mais il n'est pas trop mauvais.
OriginalL'auteur Joachim Sauer
cela fonctionne, mais peut-être quelqu'un a quelque chose de plus élégant?
On dirait que vous utilisez Spltter de goyave, les bibliothèques
yep - Listes.newArrayList est à partir de google aussi
OriginalL'auteur dotnetnewbie
Si vous êtes à la copie, tu ne peux pas copier les valeurs d'omettre les crochets et l'appel d'un
Les éléments de chaîne sera ony jamais de travail si aucun des éléments de Chaîne contient la sous-chaîne
", "
.le point d'-il de l'exercice est de copier et coller dans l'unité de test et d'obtenir de test de l'unité de travail w/ moins de chemin d'accès de la résistance en supposant que vous avez une liste de tableaux.toString() que vous pouvez copier dans le presse-papiers de l'IDE
OriginalL'auteur ring bearer
Si vous cherchez juste un copier coller de la solution,
c'est à dire supprimer les citations et les crochets avant d'essayer de le mettre en asList(). Cela devrait vous donner une Liste dans laquelle vous pourrez facilement l'utiliser pour créer une nouvelle liste de tableaux.
Si les données sont plus complexes que d'doubles, vous pourriez avoir à trouver un moyen de les analyser.
Salut ILMTitan, j'aime bien, mais il ne fonctionne pas quand la Liste a des éléments de Chaîne ie "[x,y,z]"
OriginalL'auteur ILMTitan
"Doit être une ligne" exigence assez bien assure que vous allez obtenir moches, les mess de enchaînés les appels d'API, sauf si vous écrivez une méthode d'aide à encapsuler les choses.
C'est un peu moche, mais semblable à dotnetnewbie son approche:
C'est improvisé, donc je suis sûr que peut être nettoyé un peu juste.
Plus élégante et la plus facile à lire approche serait certainement être pour le casser sur un couple de lignes ou de refactoriser à un helper dans votre cas de test (ou un Util de classe) que vous pouvez appeler avec votre chaîne et de l'avoir de retour de la sortie que vous souhaitez.
OriginalL'auteur Ophidian