Java, Masyvas ir Sąrašas yra dvi svarbiausios duomenų struktūros. Šiame skyriuje mes išmoksime kaip konvertuoti Java masyvą į sąrašą. Mes taip pat sukūrėme Java programos kurie konvertuoja masyvą į sąrašą naudojant skirtingus Java metodus.
Masyvo konvertavimas į sąrašą Java
Java masyvas yra kelių to paties duomenų tipo reikšmių rinkinys. Masyve gali būti objektai ir primityvūs tipai. Tai priklauso nuo masyvo apibrėžimo. Jei masyvo apibrėžimas yra primityvaus tipo, masyvo reikšmės saugomos užkrečiamoje atminties vietoje. Jei masyve yra objektų elementų, elementai, saugomi krūvos segmente.
Į Java , a Sąrašas yra sąsaja, kuri priklauso Java kolekcijų sistemai. Ji tvarkingai saugo elementus objektų pavidalu ir išsaugo įterpimo tvarką. Tai leidžia mums išsaugoti pasikartojančias vertes. Klasės ArrayList , LinkedList , Vektorius ir Stack įgyvendina Sąrašo sąsają.
„Java“ siūlo penkis būdus, kaip konvertuoti masyvą į sąrašą:
- Gimtasis metodas
- Naudojant Arrays.asList() metodą
- Naudojant Collections.addAll() metodą
- Naudojant Java 8 Stream API
- Naudojant Guava Lists.newArrayList() metodą
Gimtasis metodas
Tai paprasčiausias būdas konvertuoti „Java Array“ į sąrašą. Šiuo metodu pirmiausia sukuriame tuščią sąrašą ir įtraukiame visus masyvo elementus į sąrašą. Pažiūrėkime pavyzdį.
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; } }
Išvestis:
Naudojant Arrays.asList() metodą
Tai yra Java Arrays klasės metodas, priklausantis java.util paketui. Kai naudojame metodą asList() su metodu Collection.toArray(), jis veikia kaip tiltas tarp masyvo ir rinkiniu pagrįstų API.
Sintaksė:
public static List asList(T... a)
Metodas analizuoja masyvą kaip parametrą, pagal kurį bus palaikomas sąrašas. Jis grąžina nurodyto masyvo nuoseklųjį fiksuoto dydžio sąrašo vaizdą. Pažiūrėkime pavyzdį.
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; } }
Išvestis:
Naudojant Collections.addAll() metodą
Tai metodas Java kolekcijos klasė. jis priklauso java.util paketui. Klasė pateikia metodą pavadinimu Pridėti viską() . Mes galime naudoti metodą, norėdami konvertuoti masyvą į sąrašą. Jis prideda visus elementus į nurodytą kolekciją. Elementus galime nurodyti atskirai arba masyvo pavidalu. Jis veikia taip pat kaip c.addAll(Arrays.asList(elements)). Tai greitesnis įgyvendinimas nei kitas įgyvendinimas.
Sintaksė:
public static boolean addAll(Collection c, T... elements)
Jis analizuoja du parametrus:
Tai grįžta tiesa jei kolekcija pasikeitė dėl skambučio. Jame pateikiamos šios išimtys:
- Jei parametras c nepalaiko pridėjimo operacijos, jis meta NepalaikomaOperationException .
- Jei nurodytuose masyvo elementuose yra viena ar daugiau nulinių reikšmių, o c neleidžia nulinių elementų, jis meta NullPointerException .
- Jei kuris nors masyvo elementas neleidžia jo pridėti prie parametro c, jis meta IllegalPointerException .
Pažiūrėkime pavyzdį.
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; } }
Išvestis:
Naudojant Java 8 Stream API
„Java 8“ suteikia srauto API apdoroti objektų kolekcijas. Tai yra seka metodų, kuriuos galima suderinti, kad būtų pasiektas norimas rezultatas. Atminkite, kad tai nekeičia pradinės duomenų struktūros. Jis pateikia išvestį, pagrįstą konvejeriniais metodais. „Stream“ galime pasiekti įvairiais būdais, tačiau šioje programoje mes naudojome Masyvai.srautas(Objektas[]) pasiekti upelį.
Collectors.toList() metodas: Metodas grąžina rinktuvą, kuris surenka įvesties elementus į naujai sukurtą sąrašą susidūrimo metodu.
sąrašą kaip masyvą
Sintaksė:
public static Collector<t,?,list> toList() </t,?,list>
Kur T yra mūsų nurodytas elemento tipas. Metodas nesuteikia garantijų dėl tipo, kintamumo, gijų saugumo ir nuoseklumo.
Naudokime Stream API Java programoje ir konvertuokime masyvą į sąrašą.
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); } }
Išvestis:
Naudojant gvajavos sąrašus.newArrayList()
Tai metodas Sąrašai kuriai priklauso com.google.common.collect paketą. Klasė pateikia metodą newArrayList() kuri sukuria kintamą tuščią ArrayList egzempliorių, turintį nurodyto masyvo elementus.
Sintaksė:
public static ArrayList newArrayList(E... elements)
Pastaba: metodas newArrayList() galimas Java 6 ir ankstesnėse versijose. Vėlesnėse versijose jis nebenaudojamas. Vietoj aukščiau pateikto metodo mes naudojame ArrayList konstruktorių tiesiogiai.
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); } }
Išvestis: