v Javě, Pole a Seznam jsou dvě nejdůležitější datové struktury. V této části se naučíme jak převést Java Array na seznam. Také jsme vytvořili Java programy které převádějí Array na seznam pomocí různých metod Java.
Převod pole na seznam v Javě
Java pole je kolekce více hodnot stejného datového typu. Pole může obsahovat objekty a primitivní typy. Záleží na definici pole. Pokud je definice pole primitivního typu, hodnoty pole se uloží do nakažlivého paměťového místa. Pokud pole obsahuje prvky objektů, prvky uložené v segmentu haldy.
v Jáva , a Seznam je rozhraní, které patří do rámce Java Collections. Ukládá prvky ve formě objektů uspořádaným způsobem a zachovává pořadí vkládání. Umožňuje nám ukládat duplicitní hodnoty. Třídy ArrayList , Spojový seznam , Vektor a Zásobník implementuje rozhraní Seznam.
Java poskytuje pět metod pro převod pole na seznam:
- Nativní metoda
- Použití metody Arrays.asList().
- Použití metody Collections.addAll().
- Použití Java 8 Stream API
- Použití metody Guava Lists.newArrayList().
Nativní metoda
Je to nejjednodušší způsob převodu Java Array na seznam. V této metodě nejprve vytvoříme prázdný seznam a přidáme všechny prvky pole do seznamu. Podívejme se na příklad.
ArrayToListExample1.java
java tutoriály
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; } }
Výstup:
Použití metody Arrays.asList().
Je to metoda třídy Java Arrays, která patří do balíčku java.util. Když používáme metodu asList() s metodou Collection.toArray(), funguje jako most mezi rozhraními API založenými na poli a na kolekcích.
Syntax:
public static List asList(T... a)
Metoda analyzuje pole jako parametr, kterým bude seznam podložen. Vrátí serializovatelný seznam s pevnou velikostí zadaného pole. Podívejme se na příklad.
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; } }
Výstup:
Použití metody Collections.addAll().
Je to metoda Kolekce Java třída. patří do balíčku java.util. Třída poskytuje metodu pojmenovanou přidat vše() . Tuto metodu můžeme použít k převodu pole na seznam. Přidá všechny prvky do zadané kolekce. Prvky můžeme specifikovat buď jednotlivě, nebo ve formě pole. Funguje to stejně jako c.addAll(Arrays.asList(elements)). Je to rychlejší implementace než jiná implementace.
Syntax:
public static boolean addAll(Collection c, T... elements)
Analyzuje dva parametry:
Vrací se skutečný pokud se inkaso změnilo v důsledku výzvy. Vyvolá následující výjimky:
- Pokud parametr c nepodporuje operaci add, vyhodí UnsupportedOperationException .
- Pokud zadané prvky pole obsahují jednu nebo více hodnot null a c nepovoluje prvky null, vyvolá to Výjimka NullPointerException .
- Pokud nějaký prvek pole zabrání jeho přidání do parametru c, vyvolá to IllegalPointerException .
Podívejme se na příklad.
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; } }
Výstup:
Použití Java 8 Stream API
Java 8 poskytuje Stream API zpracovávat sbírky předmětů. Jedná se o posloupnost metod, které lze propojit tak, aby přinesly požadovaný výsledek. Pamatujte, že to nemění původní datovou strukturu. Poskytuje výstup založený na zřetězených metodách. Stream můžeme dosáhnout mnoha způsoby, ale v následujícím programu jsme použili Arrays.stream(Object[]) k dosažení proudu.
Collectors.toList() metoda: Metoda vrací Collector, který shromažďuje vstupní prvky do nově vytvořeného seznamu v metodě setkání.
Syntax:
public static Collector<t,?,list> toList() </t,?,list>
Kde T je typ prvku, který jsme zadali. Tato metoda neposkytuje záruky typu, proměnlivosti, bezpečnosti vláken a serializace.
Použijme Stream API v programu Java a převeďte pole na seznam.
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); } }
Výstup:
Použití Guava Lists.newArrayList()
Je to metoda Seznamy třídy, do které patří com.google.common.collect balík. Třída poskytuje metodu newArrayList() který vytvoří měnitelnou prázdnou instanci ArrayList s prvky zadaného pole.
Syntax:
public static ArrayList newArrayList(E... elements)
Poznámka: Metoda newArrayList() je dostupná pro Java 6 a starší verze. V pozdějších verzích je zastaralá. Místo výše uvedené metody používáme přímo konstruktor 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); } }
Výstup: