web-dev-qa-db-fra.com

Comment ajouter des éléments d'un tableau de chaînes à une liste de tableaux de chaînes?

J'essaie de passer un tableau de chaînes en tant qu'argument au constructeur de la classe Wetland; Je ne comprends pas comment ajouter les éléments d'un tableau de chaînes à la liste.

import Java.util.ArrayList;

public class Wetland {
    private String name;
    private ArrayList<String> species;
    public Wetland(String name, String[] speciesArr) {
        this.name = name;
        for (int i = 0; i < speciesArr.length; i++) {
            species.add(speciesArr[i]);
        }
    }
}
57
robinhood91

Vous avez déjà une méthode intégrée pour cela: -

List<String> species = Arrays.asList(speciesArr);

NOTE: - Vous devez utiliser List<String> species et non pas ArrayList<String> species.

Arrays.asList renvoie une variable ArrayList -> Java.util.Arrays.ArrayList qui ne peut pas être transtypée en Java.util.ArrayList.

Ensuite, vous devrez utiliser la méthode addAll, ce qui n’est pas si bon. Donc, utilisez simplement List<String>

NOTE: - La liste renvoyée par Arrays.asList est une liste de taille fixe. Si vous souhaitez ajouter quelque chose à la liste, vous devez en créer une autre et utiliser addAll pour y ajouter des éléments. Donc, alors vous feriez mieux d'aller avec la 2ème voie comme ci-dessous: -

    String[] arr = new String[1];
    arr[0] = "rohit";
    List<String> newList = Arrays.asList(arr);

    // Will throw `UnsupportedOperationException
    // newList.add("jain"); // Can't do this.

    ArrayList<String> updatableList = new ArrayList<String>();

    updatableList.addAll(newList); 

    updatableList.add("jain"); // OK this is fine. 

    System.out.println(newList);       // Prints [rohit]
    System.out.println(updatableList); //Prints [rohit, jain]
101
Rohit Jain

Je préfère ça,

List<String> temp = Arrays.asList(speciesArr);
species.addAll(temp);

La raison en est que la méthode Arrays.asList () créera une liste de taille fixe. Donc, si vous le stockez directement dans une espèce, alors vous ne pourrez plus ajouter d’élément, même si ce n’est pas en lecture seule. Vous pouvez sûrement modifier vos éléments. Alors, prenez-le dans une liste temporaire.

Alternative pour cela est,

Collections.addAll(species, speciesArr);

Dans ce cas, vous pouvez ajouter, éditer, supprimer vos éléments.

14
Ravi A

Je pensais que j'ajouterais celui-ci au mélange:

Collections.addAll(result, preprocessor.preprocess(lines));

C'est le changement recommandé par Intelli.

des javadocs:

Adds all of the specified elements to the specified collection.
Elements to be added may be specified individually or as an array.
The behavior of this convenience method is identical to that of
<tt>c.addAll(Arrays.asList(elements))</tt>, but this method is likely
to run significantly faster under most implementations.
 
When elements are specified individually, this method provides a
convenient way to add a few elements to an existing collection:
<pre>
Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");
</pre>

10
keisar

Vous devez instancier votre ArrayList avant d'essayer d'ajouter des éléments:

private List<String> species = new ArrayList<String>();
7
Jens Piegsa

Arrays.asList est un pont entre Array et la structure de collection et renvoie une liste de taille fixe soutenue par Array.

species = Arrays.asList(speciesArr);
5

En Java 8, la syntaxe pour cela simplifie grandement et peut être utilisée pour accomplir cette transformation de manière succincte.

Notez que vous devrez modifier votre champ d’une implémentation concrète à l’interface List pour que cela fonctionne correctement.

public class Wetland {
    private String name;
    private List<String> species;
    public Wetland(String name, String[] speciesArr) {
        this.name = name;
        species = Arrays.stream(speciesArr)
                        .collect(Collectors.toList());
    }
}
3
Makoto

La méthode Arrays.asList() renvoie simplement le type List

char [] arr = { 'c','a','t'};    
ArrayList<Character> chars = new ArrayList<Character>();

Pour ajouter le tableau à la liste, convertissez-le d'abord en liste puis appelez addAll

List arrList = Arrays.asList(arr);
chars.addAll(arrList);

La ligne suivante provoquera une erreur du compilateur

chars.addAll(Arrays.asList(arr));
2
webjockey
ArrayList<String> arraylist= new ArrayList<String>();

arraylist.addAll( Arrays.asList("mp3 radio", "presvlake", "dizalica", "sijelice", "brisaci farova", "neonke", "ratkape", "kuka", "trokut")); 
1
pikardtt

Arrays.asList est la fonction pratique disponible en Java pour convertir une variable de tableau en liste ou en collection. Pour une meilleure compréhension, considérez l'exemple ci-dessous:

package com.stackoverflow.works;

import Java.util.ArrayList;
import Java.util.Arrays;
import Java.util.List;

public class Wetland {
    private String name;
    private List<String> species = new ArrayList<String>();

    public Wetland(String name, String[] speciesArr) {
        this.name = name;
        this.species = Arrays.asList(speciesArr);
    }

    public void display() {
        System.out.println("Name: " + name);
        System.out.println("Elements in the List");
        System.out.println("********************");
        for (String string : species) {
            System.out.println(string);
        }
    }

    /*
     * @Description: Method to test your code
     */
    public static void main(String[] args) {
        String name = "Colors";
        String speciesArr[] = new String [] {"red", "blue", "green"};
        Wetland wetland = new Wetland(name, speciesArr);
        wetland.display();
    }

}

Sortie:

enter image description here

1
Sarath Kumar Sivan

Utilisez la méthode asList(). De Java Doc asList

List<String> species = Arrays.asList(speciesArr);
0
Sumit Singh