U Javi, Niz i Popis su dvije najvažnije strukture podataka. U ovom odjeljku naučit ćemo kako pretvoriti Java Array u Listu. Također smo stvorili Java programi koji pretvara niz u popis korištenjem različitih Java metoda.
Pretvaranje polja u popis u Javi
Java polje je skup višestrukih vrijednosti iste vrste podataka. Niz može sadržavati objekte i primitivne tipove. Ovisi o definiciji niza. Ako je definicija niza primitivnog tipa, vrijednosti niza pohranjuju se na zaraznu memorijsku lokaciju. Ako niz sadrži elemente objekata, elemente pohranjene u segment hrpe.
U Java , a Popis je sučelje koje pripada okviru Java Collections. Pohranjuje elemente u obliku objekata na uređen način i čuva redoslijed umetanja. Omogućuje nam pohranjivanje dupliciranih vrijednosti. Razredi ArrayList , LinkedList , Vektor i Stog implementira sučelje List.
Java nudi pet metoda za pretvaranje niza u popis kako slijedi:
- Nativna metoda
- Korištenje metode Arrays.asList().
- Korištenje metode Collections.addAll().
- Korištenje Java 8 Stream API-ja
- Korištenje metode Guava Lists.newArrayList().
Nativna metoda
To je najjednostavniji način pretvaranja Java polja u popis. U ovoj metodi prvo stvaramo prazan popis i dodajemo sve elemente niza u popis. Pogledajmo primjer.
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; } }
Izlaz:
dijkstra
Korištenje metode Arrays.asList().
To je metoda klase Java Arrays koja pripada paketu java.util. Kada koristimo metodu asList() s metodom Collection.toArray(), ona radi kao most između API-ja koji se temelje na nizu i koji se temelje na kolekciji.
Sintaksa:
public static List asList(T... a)
Metoda raščlanjuje niz kao parametar kojim će se popis poduprijeti. Vraća prikaz popisa fiksne veličine za serijalizaciju navedenog polja. Pogledajmo primjer.
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; } }
Izlaz:
Korištenje metode Collections.addAll().
To je metoda Java zbirke razreda. pripada paketu java.util. Klasa pruža metodu pod nazivom Dodaj Sve() . Možemo koristiti metodu za pretvaranje polja u popis. Dodaje sve elemente navedenoj kolekciji. Elemente možemo specificirati pojedinačno ili u obliku niza. Djeluje isto kao c.addAll(Arrays.asList(elements)). To je brža implementacija od druge implementacije.
Sintaksa:
public static boolean addAll(Collection c, T... elements)
Raščlanjuje dva parametra:
Vraća se pravi ako se kolekcija promijenila kao rezultat poziva. Dopušta sljedeće iznimke:
- Ako parametar c ne podržava operaciju dodavanja, izbacuje UnsupportedOperationException .
- Ako navedeni elementi niza sadrže jednu ili više null vrijednosti, a c ne dopušta null elemente, izbacuje NullPointerException .
- Ako bilo koji element niza sprječava njegovo dodavanje parametru c, on baca IllegalPointerException .
Pogledajmo primjer.
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; } }
Izlaz:
Korištenje Java 8 Stream API-ja
Java 8 pruža Stream API obraditi zbirke predmeta. To je slijed metoda koje se mogu usmjeriti kako bi se proizveo željeni rezultat. Zapamtite da to ne mijenja izvornu strukturu podataka. Omogućuje izlaz na temelju protočnih metoda. Stream možemo postići na više načina, ali u sljedećem programu koji smo koristili Arrays.stream(Object[]) postići potok.
Metoda Collectors.toList(): Metoda vraća sakupljač koji prikuplja ulazne elemente u novostvoreni popis u metodi susreta.
Sintaksa:
public static Collector<t,?,list> toList() </t,?,list>
Gdje je T tip elementa koji smo naveli. Metoda ne daje jamstva za tip, promjenjivost, sigurnost niti i mogućnost serijalizacije.
nizove u cijele brojeve
Upotrijebimo Stream API u Java programu i pretvorimo niz u popis.
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); } }
Izlaz:
Korištenje Guava Lists.newArrayList()
To je metoda Popisi klasa kojoj pripadaju com.google.common.collect paket. Klasa daje metodu noviArrayList() koji stvara promjenjivu praznu instancu ArrayList koja ima elemente navedenog niza.
Sintaksa:
public static ArrayList newArrayList(E... elements)
Napomena: metoda newArrayList() dostupna je za Javu 6 i starije verzije. U kasnijim verzijama je zastario. Umjesto gornje metode, izravno koristimo ArrayList konstruktor.
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); } }
Izlaz: