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]);
}
}
}
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]
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.
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>
Vous devez instancier votre ArrayList
avant d'essayer d'ajouter des éléments:
private List<String> species = new ArrayList<String>();
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);
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());
}
}
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));
ArrayList<String> arraylist= new ArrayList<String>();
arraylist.addAll( Arrays.asList("mp3 radio", "presvlake", "dizalica", "sijelice", "brisaci farova", "neonke", "ratkape", "kuka", "trokut"));
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:
Utilisez la méthode asList()
. De Java Doc asList
List<String> species = Arrays.asList(speciesArr);