Iterable 和 Collection 在 Java 中非常有用。 Java 中的 Collection 框架中使用迭代器來逐個檢索元素,而 Collection 是一組表示為單個單元的單個對象。 Java 提供了集合框架,它定義了多個類和接口,將一組對象表示為一個單元。但在某些時候,需要從可迭代切換到集合,反之亦然。關於Iterable和Collection的更多區別,請參考Java中的Iterator vs Collection一文。Iterable到Collection的轉換可以通過以下方式進行:
- 創建效用函數:創建實用函數意味著創建一個函數,通過顯式考慮每個項目來將可迭代對象轉換為集合。這也可以通過多種方式完成,如下所述:
- 使用 For 循環
Java
// 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 及更高版本中使用。
Java
// 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]
- 使用迭代器:forEach 循環在後台使用 Iterator。因此,它可以通過以下方式明確地完成。
Java
// 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 流: 隨著 Java 8 中 Stream 的引入,這樣的工作變得非常容易。要將 iterable 轉換為 Collection,首先將 iterable 轉換為 spliterator。然後在 StreamSupport.stream() 的幫助下,可以遍曆拆分器,然後在 collect() 的幫助下將其收集到集合中。
Java
// 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]
相關用法
- Java Iterable轉Stream用法及代碼示例
- Java Iterator轉Iterable用法及代碼示例
- Java Iterable用法及代碼示例
- Java Iterable forEach()用法及代碼示例
- Java Array轉Collection用法及代碼示例
- Java Collection addAll()用法及代碼示例
- Java Collection clear()用法及代碼示例
- Java Collection isEmpty()用法及代碼示例
- Java Collection contains()用法及代碼示例
- Java Stack addAll(int, Collection)用法及代碼示例
- Java Stack addAll(Collection)用法及代碼示例
注:本文由純淨天空篩選整理自RishabhPrabhu大神的英文原創作品 Convert an Iterable to Collection in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。