Java >> Tutoriel Java >  >> Java

Comment convertir Iterable en Collection en Java ?

Il existe différentes façons de convertir Iterable en Collection dans le langage de programmation Java .

  1. Avec l'aide de la création d'une fonction utilitaire
    1. En utilisant la boucle for
    2. En utilisant la méthode forEach() de Iterable
    3. En utilisant Iterator
  2. 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] 

Balise Java