În această secțiune, vom discuta cum se transformă Set ( HashSet sau TreeSet ) în listă ( ArrayList sau LinkedList ).
Există următoarele moduri de a converti Set în Listă în Java:
- Abordare nativă
- Utilizarea constructorului (ArrayList sau LinkedList)
- Folosind metoda ArrayList addAll().
- Folosind Curent în Java
Abordare nativă
Logica pentru abordarea nativă este foarte simplă. În această abordare, pur și simplu creăm un Set (HashSet sau TreeSet) și iterăm peste Setul și adăugăm toate elementele Setului la listă cu ajutorul unei bucle.
SetToListExample1.java
import java.util.*; public class SetToListExample1 { public static void main(String args[]) { //creating a Set of type String Set set = new HashSet(); //adding elements to the Set set.add('Bordeaux'); set.add('Cannes'); set.add('Chamonix'); set.add('Chartres'); set.add('Clermont-Ferrand'); set.add('Limoges'); set.add('Marseille'); set.add('Nice'); set.add('Paris'); //determines the size of Set int n = set.size(); //creates an ArrayList of size n List list = new ArrayList(n); //loop iterates over Set for (String x : set) //adds elements to the list list.add(x); System.out.println('ArrayList is: '); //loop iterates over List for (String x : list) //prints the elements System.out.println(x); } }
Ieșire:
ArrayList is: Cannes Bordeaux Marseille Nice Clermont-Ferrand Chartres Limoges Chamonix Paris
Utilizarea constructorului (clasa ArrayList sau LinkedList)
Logica este aceeași ca mai sus. Singura diferență este că am folosit constructorul clasei ArrayList și LinkedList și am transmis elementele set constructorului.
List list = new ArrayList(set); List lList = new LinkedList(set);
SetToListExample2.java
import java.util.*; public class SetToListExample2 { public static void main(String args[]) { //creating a HashSet of type String Set set= new HashSet(); //adding elements to the Set set.add('Sharjah'); set.add('Dubai'); set.add('Abu Dhabi'); set.add('Kalba'); set.add('Dhaid'); set.add('Hatta'); //creates an ArrayList using constructor and passing elements to the constructor List list = new ArrayList(set); System.out.println('ArrayList is: '); //loop iterates over the list for (String x : list) //prints the ArrayList System.out.println(x); System.out.println(' LinkedList is: '); //creates LinkedList using constructor and passing elements to the constructor List lList = new LinkedList(set); //loop iterates over LinkedList for (String x : lList) //prints the LinkedList System.out.println(x); } }
Ieșire:
10 din 40
ArrayList is: Sharjah Dhaid Kalba Hatta Dubai Abu Dhabi LinkedList is: Sharjah Dhaid Kalba Hatta Dubai Abu Dhabi
Folosind metoda ArrayList.addAll().
Metoda ArrayList.addAll() adaugă toate elementele din colecția specificată la sfârșitul acestei liste, în ordinea în care sunt returnate de Iteratorul colecției specificate. Acesta suprascrie metoda addAll() a clasei AbstractCollection.
SetToListExample3.java
import java.util.*; public class SetToListExample3 { public static void main(String args[]) { //converting HashSet to ArrayList //creating a HashSet of type String Set set = new HashSet(); //adding elements to the Set set.add('Texas'); set.add('California'); set.add('Illinois'); set.add('Dallas'); set.add('San Jose'); set.add('California'); set.add('Austin'); set.add('Columbus'); //creates a constructor of the ArrayList class List list = new ArrayList(); //adding the set elements to the list using the addAll() method list.addAll(set); System.out.println('ArrayList is: '); //loop iterates over the LinkedList for (String x : list) //prints the ArrayList System.out.println(x); //converting HashSet to LinkedList List linkList = new LinkedList(); //adding Set elements to the LinkedList using the addAll() method linkList.addAll(set); System.out.println(' LinkedList is: '); //loop iterates over the LinkedList for (String x : linkList) //prints the LinkedList System.out.println(x); } }
Ieșire:
ArrayList is: Texas Illinois Columbus California Austin Dallas San Jose LinkedList is: Texas Illinois Columbus California Austin Dallas San Jose
Utilizarea Stream în Java
Dacă folosim Stream pentru a converti Set în Listă, mai întâi, vom converti Set în stream și apoi vom converti stream-ul în listă. Funcționează numai în Java 8 sau versiuni ulterioare.
List list = set.stream().collect(Collectors.toList());
curent(): Metoda stream() returnează un flux de obiect obișnuit al unui set sau al unei liste.
negație matematică discretă
Stream.collect(): Metoda collect() a clasei Stream este folosită pentru a acumula elemente ale oricărui Stream într-o colecție.
Collectors.toList(): Metoda returnează un colector care colectează elementele de intrare într-o listă nouă.
Să vedem un exemplu.
SetToListExample4.java
import java.util.*; import java.util.stream.*; public class SetToListExample4 { public static void main(String args[]) { //Creating a hash set of strings Set set = new HashSet(); //adding elements to the Set set.add('London'); set.add('England'); set.add('Wales'); set.add('Scotland'); set.add('Bristol'); set.add('Cambridge'); //converts set to stream and then stream to list List list = set.stream().collect(Collectors.toList()); System.out.println('List is: '); //loop iterates over the list for (String x : list) //prints the list elements System.out.println(x); } }
Ieșire:
List is: Cambridge Bristol Wales London England Scotland