En aquesta secció, parlarem com convertir Set ( HashSet o Conjunt d'arbres ) a la llista ( ArrayList o LinkedList ).
Hi ha les maneres següents de convertir Set a List a Java:
- Enfocament natiu
- Utilitzant el constructor (ArrayList o LinkedList)
- Utilitzant el mètode ArrayList addAll().
- Utilitzant corrent en Java
Enfocament natiu
La lògica de l'enfocament natiu és molt senzilla. En aquest enfocament, simplement creem un conjunt (HashSet o TreeSet) i iterem sobre el conjunt i afegim tots els elements del conjunt a la llista amb l'ajuda d'un 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); } }
Sortida:
ArrayList is: Cannes Bordeaux Marseille Nice Clermont-Ferrand Chartres Limoges Chamonix Paris
Utilitzant el constructor (ArrayList o LinkedList Class)
La lògica és la mateixa que l'anterior. L'única diferència és que hem utilitzat el constructor de la classe ArrayList i LinkedList i hem passat elements de conjunt al constructor.
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); } }
Sortida:
ArrayList is: Sharjah Dhaid Kalba Hatta Dubai Abu Dhabi LinkedList is: Sharjah Dhaid Kalba Hatta Dubai Abu Dhabi
Utilitzant el mètode ArrayList.addAll().
El mètode ArrayList.addAll() afegeix tots els elements de la col·lecció especificada al final d'aquesta llista, en l'ordre en què són retornats per l'iterador de la col·lecció especificada. Substitueix el mètode addAll() de la classe 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); } }
Sortida:
ArrayList is: Texas Illinois Columbus California Austin Dallas San Jose LinkedList is: Texas Illinois Columbus California Austin Dallas San Jose
Ús de Stream a Java
Si utilitzem Stream per convertir Set a List, primer, convertirem Set en stream i després convertirem el stream en llista. Només funciona en Java 8 o versions posteriors.
List list = set.stream().collect(Collectors.toList());
corrent(): El mètode stream() retorna un flux d'objectes normal d'un conjunt o llista.
Stream.collect(): El mètode collect() de la classe Stream s'utilitza per acumular elements de qualsevol Stream en una col·lecció.
Collectors.toList(): El mètode retorna un Col·lector que recull els elements d'entrada en una llista nova.
Vegem un exemple.
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); } }
Sortida:
List is: Cambridge Bristol Wales London England Scotland