A Java, Matriu i Llista són les dues estructures de dades més importants. En aquest apartat, aprendrem com convertir Java Array en una llista. També hem creat Programes Java que converteixen Array en una llista utilitzant diferents mètodes Java.
Convertir matriu a llista en Java
Matriu Java és una col·lecció de diversos valors del mateix tipus de dades. Una matriu pot contenir objectes i tipus primitius. Depèn de la definició de la matriu. Si una definició de matriu és de tipus primitiu, els valors de la matriu s'emmagatzemen a la ubicació de memòria contagiosa. Si una matriu conté elements objectes, elements emmagatzemats al segment de pila.
En Java , a Llista és una interfície que pertany al framework Java Collections. Emmagatzema elements en forma d'objectes de manera ordenada i conserva l'ordre d'inserció. Ens permet emmagatzemar valors duplicats. Les classes ArrayList , LinkedList , Vector i Pila implementa la interfície de llista.
Java ofereix cinc mètodes per convertir Array en una llista són els següents:
- Mètode Natiu
- Utilitzant el mètode Arrays.asList().
- Utilitzant el mètode Collections.addAll().
- Utilitzant l'API Java 8 Stream
- Utilitzant el mètode Guava Lists.newArrayList().
Mètode Natiu
És el mètode més senzill per convertir Java Array en una llista. En aquest mètode primer, creem una llista buida i afegim tots els elements de la matriu a la llista. Vegem un exemple.
ArrayToListExample1.java
import java.util.*; public class ArrayToListExample1 { public static void main(String args[]) { //creating an array String array[] = { 'Golf', 'Soccer', 'Baseball', 'Volleyball', 'Tennis', 'Badminton', 'Rugby', 'Archery', 'Skiing'}; //prints the array before conversion System.out.println('Array before conversion: '+ Arrays.toString(array)); //calling the generic function that converts Array into List List list = ArrayToListConversion(array); //print the List System.out.println('Array as List: ' + list); } //creating a generic function that converts the Array into List public static List ArrayToListConversion(T array[]) { //creating the constructor of the List class List list = new ArrayList(); //using for-each loop to iterate over the array for (T t : array) { //adding each element to the List list.add(t); } //returns the list converted into Array return list; } }
Sortida:
Utilitzant el mètode Arrays.asList().
És el mètode de la classe Java Arrays que pertany al paquet java.util. Quan utilitzem el mètode asList() amb el mètode Collection.toArray(), funciona com a pont entre les API basades en matrius i les basades en col·leccions.
Sintaxi:
public static List asList(T... a)
El mètode analitza una matriu com a paràmetre pel qual es farà una còpia de seguretat de la llista. Retorna una vista de llista de mida fixa serialitzable de la matriu especificada. Vegem un exemple.
ArrayToListExample2.java
import java.util.*; public class ArrayToListExample2 { public static void main(String args[]) { //creating an array to be converted String arr[] = { 'Aston Martin', 'Bugatti', 'Bentley', 'Alfa Romeo', 'Buick', 'Acura', 'Audi', 'BMW', 'Buick' }; //prints array before conversion System.out.println('Array before conversion: '+ Arrays.toString(arr)); //calling generic method that converts Array into List List list = ArrayToListConversion(arr); //prints the List System.out.println('Array after conversion: ' + list); } //creating a generic function that converts the Array into List public static List ArrayToListConversion(T arr[]) { //invoking the asList() method and passing the array to be converted List list = Arrays.asList(arr); //returns the list return list; } }
Sortida:
conjunt mecanografiat
Utilitzant el mètode Collections.addAll().
És el mètode de la Col·leccions Java classe. pertany al paquet java.util. La classe proporciona un mètode anomenat afegirAll() . Podem utilitzar el mètode per convertir Array en una llista. Afegeix tots els elements a la col·lecció especificada. Podem especificar elements individualment o en forma de matriu. Funciona igual que c.addAll(Matrius.asList(elements)). És una implementació més ràpida que una altra implementació.
Sintaxi:
public static boolean addAll(Collection c, T... elements)
Analitza dos paràmetres:
Torna veritat si la recaptació ha canviat com a conseqüència de la convocatòria. Llança les següents excepcions:
- Si el paràmetre c no admet l'operació d'afegir, es llança UnsupportedOperationException .
- Si els elements de matriu especificats contenen un o més valors nuls i c no permet elements nuls, es llança NullPointerException .
- Si algun element de matriu impedeix que s'afegeixi al paràmetre c, es llança IllegalPointerException .
Vegem un exemple.
ArrayToListExample3.java
import java.util.*; public class ArrayToListExample3 { public static void main(String args[]) { //creating an Array to be converted String arr[] = { 'San Jose', 'Dallas', 'Chicago','San Antonio', 'Los Angeles', 'Portland', 'Tucson' }; //prints the Array System.out.println('Array before conversion: '+ Arrays.toString(arr)); //method calling List list = ArrayToListConversion(arr); //print the List System.out.println('Array after conversion: ' + list); } //creating a generic function that converts the Array into List public static List ArrayToListConversion(T arr[]) { //creating the constructor of thr List class List list = new ArrayList(); //the method adds Array to the List Collections.addAll(list, arr); //returns the list return list; } }
Sortida:
Utilitzant l'API Java 8 Stream
Java 8 proporciona l'API Stream per processar les col·leccions d'objectes. És una seqüència de mètodes que es poden canalitzar per produir el resultat desitjat. Recordeu que no canvia l'estructura de dades original. Proporciona la sortida basada en els mètodes canalitzats. Podem aconseguir Stream de diverses maneres, però en el programa següent, hem utilitzat Arrays.stream(Objecte[]) per assolir la riera.
Collectors.toList() Mètode: El mètode retorna un Col·lector que recull els elements d'entrada en una llista acabada de crear en un mètode de trobada.
Sintaxi:
public static Collector<t,?,list> toList() </t,?,list>
On T és el tipus d'element que hem especificat. El mètode no ofereix garanties sobre el tipus, la mutabilitat, la seguretat del fil i la serialització.
comparat en java
Utilitzem l'API Stream en un programa Java i convertim una matriu en una llista.
ArrayToListExample4.java
import java.util.*; import java.util.stream.Collectors; public class ArrayToListExample4 { //creating a generic function that converts the Array into List public static List ArrayToListConversion(T arr[]) { //creates a list from the specified Array and returns the List return Arrays.stream(arr).collect(Collectors.toList()); } public static void main(String args[]) { //creating an array to be converted into List String arr[] = { 'Python', 'HTM', 'Java', 'C', 'C++', 'JavaScript', 'Ruby', 'Swift', 'PHP' }; //prints the Array before conversion System.out.println('Array: '+ Arrays.toString(arr)); //calling the method created above and storing the elements into the List object List list = ArrayToListConversion(arr); //prints the List System.out.println('List: ' + list); } }
Sortida:
Ús de Guava Lists.newArrayList()
És el mètode de la Llistes classe a la qual pertanyen com.google.common.collect paquet. La classe proporciona un mètode newArrayList() que crea una instància ArrayList buida mutable que té els elements de la matriu especificada.
Sintaxi:
public static ArrayList newArrayList(E... elements)
Nota: el mètode newArrayList() està disponible per a Java 6 i versions anteriors. En versions posteriors està obsolet. En lloc del mètode anterior, utilitzem directament el constructor ArrayList.
ArrayToListExample5.java
import static com.google.common.collect.Lists.*; import java.util.*; public class ArrayToListExample5 { public static void main(String args[]) { //creating an Array to be converted into a List String arr[] = { 'Mango', 'Banana', 'Grapes', 'Apple', 'Plum', 'Blackberry', 'Papaya', 'Orange' }; //prints the Array before conversion System.out.println('Array: '+ Arrays.toString(arr)); //convert the Array to List List list = ArrayToListConversion(arr); //prints the List System.out.println('List: ' + list); } //creating a generic function that converts the Array into List public static List ArrayToListConversion(T arr[]) { //creates a List from the specified Array return Lists.newArrayList(arr); } }
Sortida: