Comment convertir Iterable en Collection en Java ?
Il existe différentes façons de convertir Iterable en Collection dans le langage de programmation Java .
- Avec l'aide de la création d'une fonction utilitaire
- En utilisant la boucle for
- En utilisant la méthode forEach() de Iterable
- En utilisant Iterator
- Avec l'aide de stream avec la méthode collect() en Java 8
- Avec l'aide de la fonction utilitaire
Dans cette méthode, nous allons changer ou convertir Iterable en Collection explicitement (c'est-à-dire que nous prendrons chaque élément d'un objet manuellement).
i) En utilisant for Loop
// Java program to demonstrate the example of // converting an Iterable into a Collection by using for loop import java.util.*; import java.io.*; public class ConvertIterableToCollection { // This is a user defined method which is used to // convert Iterable to Collection public static < T > Collection < T > convertCollectionFromIterable(Iterable < T > iterable) { // Create a blank Collection to hold the result Collection < T > collect = new LinkedList < T > (); // By using for loop to iterate through the // iterable to add each element for (T type: iterable) collect.add(type); return collect; } public static void main(String[] args) { Iterable < Double > itr = Arrays.asList(10.0, 20.0, 30.0, 40.0); System.out.println("The values of Iterable list are : " + itr); Collection < Double > coll = convertCollectionFromIterable(itr); System.out.println("The values of Collection list are : " + coll); } }
Sortie
E:\Programs>javac ConvertIterableToCollection.java E:\Programs>java ConvertIterableToCollection The values of Iterable list are : [10.0, 20.0, 30.0, 40.0] The values of Collection list are : [10.0, 20.0, 30.0, 40.0]
ii) En utilisant forEach() de Iterable
Cette méthode est disponible dans les versions Java 8 ou supérieures, elle prend donc en charge les versions java8 ou supérieures.
// Java program to demonstrate the example of converting // an Iterable into a Collection by using forEach() of Iterable. import java.util.*; import java.io.*; public class ConvertIterableToCollection { // This is a user defined method which is used to // convert Iterable to Collection public static < T > Collection < T > convertCollectionFromIterable(Iterable < T > iterable) { // Create a blank Collection to hold the result Collection < T > collect = new LinkedList < T > (); // By using forEach() to iterate through // the iterable to add each element iterable.forEach(collect::add); return collect; } public static void main(String[] args) { Iterable < Double > itr = Arrays.asList(10.0, 20.0, 30.0, 40.0); System.out.println("The values of Iterable list are : " + itr); Collection < Double > coll = convertCollectionFromIterable(itr); System.out.println("The values of Collection list are : " + coll); } }
Sortie
E:\Programs>javac ConvertIterableToCollection.java E:\Programs>java ConvertIterableToCollection The values of Iterable list are : [10.0, 20.0, 30.0, 40.0] The values of Collection list are : [10.0, 20.0, 30.0, 40.0]
iii) En utilisant Iterator
// Java program to demonstrate the example of // converting an Iterable into a Collection by using Iterator. import java.util.*; import java.io.*; public class ConvertIterableToCollection { // This is a user defined method which is used to // convert Iterable to Collection public static < T > Collection < T > convertCollectionFromIterable(Iterable < T > iterable) { // Create a blank Collection to hold the result Collection < T > collect = new LinkedList < T > (); // By using Iterator to get the Iterator Iterator < T > iterate = iterable.iterator(); // By using Iterator to iterate through the iterable // to add each element into the Collection while (iterate.hasNext()) collect.add(iterate.next()); return collect; } public static void main(String[] args) { Iterable < Double > itr = Arrays.asList(10.0, 20.0, 30.0, 40.0); System.out.println("The values of Iterable list are : " + itr); Collection < Double > coll = convertCollectionFromIterable(itr); System.out.println("The values of Collection list are : " + coll); } }
Sortie
E:\Programs>javac ConvertIterableToCollection.java E:\Programs>java ConvertIterableToCollection The values of Iterable list are : [10.0, 20.0, 30.0, 40.0] The values of Collection list are : [10.0, 20.0, 30.0, 40.0]
2) Avec l'aide de stream avec la méthode collect() en Java 8
Dans cette méthode, Iterable convertit d'abord en spliterator puis après à l'aide de StreamSupport.stream() le séparateur peut être traversé puis collecté à l'aide de collect() dans Collection.
// Java program to demonstrate the example of stream() // with collect() to convert an Iterable into Collection import java.util.*; import java.io.*; import java.util.stream.*; public class ConvertIterableToCollection { // This is a user defined method which is used // to convert Iterable to Collection public static < T > Collection < T > convertCollectionFromIterable(Iterable < T > iterable) { // Create a blank Collection to hold the result Collection < T > collect = new LinkedList < T > (); return StreamSupport.stream(iterable.spliterator(), false).collect(Collectors.toList()); } public static void main(String[] args) { Iterable < Double > itr = Arrays.asList(10.0, 20.0, 30.0, 40.0); System.out.println("The values of Iterable list are : " + itr); Collection < Double > coll = convertCollectionFromIterable(itr); System.out.println("The values of Collection list are : " + coll); } }
Sortie
E:\Programs>javac ConvertIterableToCollection.java E:\Programs>java ConvertIterableToCollection The values of Iterable list are : [10.0, 20.0, 30.0, 40.0] The values of Collection list are : [10.0, 20.0, 30.0, 40.0]