Je veux savoir s'il est sûr / conseillé de convertir ArrayList en Array? J'ai un fichier texte avec chaque ligne une chaîne:
1236
1233
4566
4568
....
Je veux les lire dans une liste de tableaux, puis je les convertis en tableau. Est-il conseillé / légal de faire cela?
Merci
Réponses:
Oui , il est sûr de convertir un
ArrayList
à unArray
. Que ce soit une bonne idée dépend de votre utilisation prévue. Avez-vous besoin des opérations quiArrayList
fournissent? Si tel est le cas, conservez-le au formatArrayList
. Sinon, convertissez-vous!les sorties
la source
The method toArray(T[]) in the type ArrayList<Character> is not applicable for the arguments (char[])
C'est la meilleure façon (à mon humble avis).
Ce code fonctionne également:
Mais c'est moins efficace: le tableau de chaînes est créé deux fois: la première fois que le tableau de longueur nulle est créé, le tableau de taille réelle est créé, rempli et renvoyé. Donc, si vous connaissez la taille nécessaire (à partir de
list.size()
), vous devez créer un tableau suffisamment grand pour contenir tous les éléments. Dans ce cas, il n'est pas réaffecté.la source
new String[0]
etnew String[size]
new String[0]
est en fait plus efficace. shipilev.net/blog/2016/arrays-wisdom-ancientsQue ce soit une "bonne idée" dépendra vraiment de votre cas d'utilisation.
la source
Object
en supposant que v est une ArrayList:
la source
Il existe deux styles pour convertir une collection en tableau: soit en utilisant un tableau pré-dimensionné (comme
c.toArray(new String[c.size()])
), soit en utilisant un tableau vide (commec.toArray(new String[0])
). Dans les anciennes versions de Java, il était recommandé d'utiliser un tableau prédimensionné, car l'appel de réflexion nécessaire pour créer un tableau de taille appropriée était assez lent. Cependant, depuis les dernières mises à jour d' OpenJDK 6, cet appel était intrinsèque, rendant les performances de la version de tableau vide les mêmes et parfois même meilleures, par rapport à la version pré-dimensionnée. Le passage d'un tableau pré-dimensionné est également dangereux pour une collection simultanée ou synchronisée, car une course aux données est possible entre la taille et l'appel toArray, ce qui peut entraîner des valeurs nulles supplémentaires à la fin du tableau, si la collection a été réduite simultanément pendant l'opération. Vous pouvez suivre le style uniforme:soit en utilisant un tableau vide (ce qui est recommandé dans Java moderne) ou en utilisant un tableau pré-dimensionné (qui peut être plus rapide dans les anciennes versions de Java ou les JVM non basées sur HotSpot) .la source
Il s'agit de l'utilisation recommandée pour les nouveaux Java (> Java 6)
la source
L'interface Collection inclut la méthode toArray () pour convertir une nouvelle collection en tableau. Il existe deux formes de cette méthode. La version sans argument renverra les éléments de la collection dans un tableau Object: public Object [] toArray (). Le tableau renvoyé ne peut pas convertir en un autre type de données. Ceci est la version la plus simple. La deuxième version nécessite que vous passiez le type de données du tableau que vous souhaitez renvoyer: public Object [] toArray (Object type []).
pour référence, reportez-vous à ce lien http://techno-terminal.blogspot.in/2015/11/how-to-obtain-array-from-arraylist.html
la source
Une approche serait d'ajouter la deuxième boucle for où l'impression est effectuée à l'intérieur de la première boucle for. Comme ça:
la source
Cela dépend de ce que vous voulez réaliser si vous devez manipuler le tableau plus tard, cela coûtera plus d'efforts que de conserver la chaîne dans ArrayList. Vous avez également un accès aléatoire avec une ArrayList par
list.get( index );
la source