Préface:
Cet article présente la comparaison des avantages et des inconvénients des trois situations de convertissage des tableaux en liste en Java, ainsi que la comparaison des scénarios d'application, et l'analyse des causes des erreurs de conversion de type que les programmeurs font souvent.
1. La manière la plus courante (pas nécessairement la meilleure)
Après avoir converti le tableau en liste via Arrays.asList(strArray) , vous ne pouvez pas ajouter ou supprimer la liste. Vous ne pouvez que le vérifier et le modifier, sinon une exception sera lancée.
Code de clé: List list = Arrays.asList(strArray);
private void TestArrayScastToListror () {String [] starray = new String [2]; List list = arrays.aslist (starray); // insérer des données dans la liste convertie List.Add ("1"); System.out.println (liste); }Résultats de l'exécution:
Exception dans Thread "Main" java.lang.unsupportedOperationException
sur java.util.abstractList.add (abstractList.java:148)
sur java.util.abstractList.add (abstractList.java:108)
sur com.darwin.junit.calculator.testarraycasttolist (calculator.java:19)
sur com.darwin.junit.calculator.main (calculator.java:44)
Le programme lance une exception sur list.add(“1”) . InsupportedOperationException.
Analyse des raisons:
La valeur de retour des Arrays.asList(strArray) est une classe intérieure statique privée java.util.Arrays class java.util.Arrays.ArrayList , qui n'est pas java.util.ArrayList . java.util.Arrays.ArrayList a set() , get() , contains() et d'autres méthodes, mais n'a pas la méthode d'ajouter add() ou de supprimer remove() , donc appeler add() provoquera une erreur.
Scénario d'utilisation: Arrays.asList(strArray) La méthode ne peut être utilisée qu'après convertir un tableau en liste. Il n'est pas nécessaire d'ajouter ou de supprimer les valeurs, et il n'est utilisé que comme source de données à lire.
2. Une fois le tableau converti en liste, il prend en charge la méthode d'ajout, de supprimer, de modifier et de rechercher.
Grâce au constructeur ArrayList, convertissez la valeur de retour de Arrays.asList(strArray) de java.util.Arrays.ArrayList à java.util.ArrayList .
Code de clé: ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
private void TestArrayScastToliStright () {String [] starray = new String [2]; ArrayList <string> list = new ArrayList <string> (arrays.aslist (starray)); list.add ("1"); System.out.println (liste); }Résultat de l'exécution: un élément "1" a été ajouté avec succès.
[NULL, NULL, 1]
Scénario d'utilisation: Après avoir converti le tableau en une liste, vous devez ajouter, supprimer, modifier et vérifier la liste. Il peut être utilisé si la quantité de données dans la liste n'est pas importante.
3. Grâce aux collections de classe d'outils de collecte.Addall () Méthode (la plus efficace)
Convertir dans Collections.addAll(arrayList, strArray) , créez une liste de la même longueur en fonction de la longueur du tableau, puis convertissez les éléments du tableau en binaire via Collections.addAll() , puis ajoutez-le à la liste. Il s'agit de la méthode la plus efficace.
Code clé:
ArrayList <string> arrayList = new ArrayList <string> (starray.length); collections.addall (arrayList, starray);
test:
private void TestArrayScastToListEfficient () {String [] starray = new String [2]; ArrayList <string> arrayList = new ArrayList <string> (starray.length); Collection.Addall (ArrayList, StraRray); arrayList.add ("1"); System.out.println (ArrayList); }Résultat de l'exécution: a également réussi à ajouter un élément "1".
[NULL, NULL, 1]
Scénario d'utilisation: Après avoir converti le tableau en une liste, vous devez ajouter, supprimer, modifier et vérifier la liste. Lorsque le volume de données de la liste est énorme, il est préféré les utiliser, ce qui peut améliorer la vitesse de fonctionnement.
Remarque: joignez le code source Collections.addAll() Méthode:
Public Static <T> Boolean Addall (Collection <? Super T> C, T ... Elements) {Boolean Result = False; Pour (élément t: éléments) Résultat | = C.Add (élément); // Résultat et C.Add (élément) Bitwise ou Operation, puis attribuez la valeur au résultat de retour; }Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.