Java Iterable转换为Collection

Java Iterable转换为Collection

IterableCollection 在Java中发挥了巨大的作用。迭代器在Java的集合框架中被用来逐一检索元素,而集合则是一组作为单一单元的单个对象。Java提供了集合框架,它定义了几个类和接口来表示作为单一单元的一组对象。
但在某些时候,需要从迭代器切换到集合,反之亦然。
Iterable到Collection的转换可以通过以下方式进行:

  • 创建一个实用函数 :创建一个实用函数意味着创建一个函数,通过明确考虑每个项目,将迭代器转换为一个集合。这也可以通过许多方式实现,如下所述。
    • 使用For循环
// Below is the program to convert an Iterable
// into a Collection using for loop
 
import java.io.*;
import java.util.*;
 
class GFG {
    // function to convert Iterable into Collection
    public static <T> Collection<T>
                   getCollectionFromIterable(Iterable<T> itr)
    {
        // Create an empty Collection to hold the result
        Collection<T> cltn = new ArrayList<T>();
 
        // Iterate through the iterable to
        // add each element into the collection
        for (T t : itr)
            cltn.add(t);
 
        // Return the converted collection
        return cltn;
    }
 
    public static void main(String[] args)
    {
        Iterable<Integer> i = Arrays.asList(1, 2, 3, 4);
        System.out.println("Iterable List : " + i);
 
        Collection<Integer> cn = getCollectionFromIterable(i);
        System.out.println("Collection List : " + cn);
    }
}

输出

Iterable List : [1, 2, 3, 4]
Collection List : [1, 2, 3, 4]
  • 使用Iterable.forEach() :

    它可以在Java 8及以上版本中使用。

// Below is the program to convert an Iterable
// into a Collection using iterable.forEach
 
import java.io.*;
import java.util.*;
 
class GFG {
    // function to convert Iterable into Collection
    public static <T> Collection<T>
                getCollectionFromIterable(Iterable<T> itr)
    {
        // Create an empty Collection to hold the result
        Collection<T> cltn = new ArrayList<T>();
 
        // Use iterable.forEach() to
        // Iterate through the iterable and
        // add each element into the collection
        itr.forEach(cltn::add);
 
        // Return the converted collection
        return cltn;
    }
 
    public static void main(String[] args)
    {
        Iterable<Integer> i = Arrays.asList(1, 2, 3, 4);
        System.out.println("Iterable List : " + i);
 
        Collection<Integer> cn = getCollectionFromIterable(i);
        System.out.println("Collection List : " + cn);
    }
}

输出

Iterable List : [1, 2, 3, 4]
Collection List : [1, 2, 3, 4]
  • 使用Iterator :forEach循环在后台使用Iterator。因此,它可以通过以下方式明确进行。
// Below is the program to convert an Iterable
// into a Collection using Iterator
 
import java.io.*;
import java.util.*;
 
class GFG {
    // function to convert Iterable into Collection
    public static <T> Collection<T>
                   getCollectionFromIterable(Iterable<T> itr)
    {
        // Create an empty Collection to hold the result
        Collection<T> cltn = new ArrayList<T>();
 
        // Get the iterator at the iterable
        Iterator<T> iterator = itr.iterator();
 
        // Iterate through the iterable using
        // iterator to add each element into the collection
        while (iterator.hasNext()) {
            cltn.add(iterator.next());
        }
 
        // Return the converted collection
        return cltn;
    }
 
    public static void main(String[] args)
    {
        Iterable<Integer> i = Arrays.asList(1, 2, 3, 4);
        System.out.println("Iterable List : " + i);
 
        Collection<Integer> cn = getCollectionFromIterable(i);
        System.out.println("Collection List : " + cn);
    }
}

输出

Iterable List : [1, 2, 3, 4]
Collection List : [1, 2, 3, 4]
  • Java 8 Stream :随着Java 8中Stream的引入,这样的工作变得相当容易。要将iterable转换为Collection,首先要将 iterable 转换成 splitator。 然后在 StreamSupport.stream() 的帮助下,spliterator可以被遍历,然后在 collect()的 帮助下收集到集合中。
// Program to convert an Iterable
// into a Collection
 
import java.io.*;
import java.util.*;
import java.util.stream.*;
 
class GFG {
    // function to convert Iterable into Collection
    public static <T> Collection<T>
                    getCollectionFromIterable(Iterable<T> itr)
    {
        // Create an empty Collection to hold the result
        Collection<T> cltn = new ArrayList<T>();
 
        return StreamSupport.stream(itr.spliterator(), false)
            .collect(Collectors.toList());
    }
 
    public static void main(String[] args)
    {
        Iterable<Integer> i = Arrays.asList(1, 2, 3, 4);
        System.out.println("Iterable List : " + i);
 
        Collection<Integer> cn = getCollectionFromIterable(i);
        System.out.println("Collection List : " + cn);
    }
}

输出

Iterable List : [1, 2, 3, 4]
Collection List : [1, 2, 3, 4]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程