給定一個迭代器,任務是將其轉換為 Java 中的 List。
例子:
Input: Iterator = {1, 2, 3, 4, 5} Output: {1, 2, 3, 4, 5} Input: Iterator = {'G', 'e', 'e', 'k', 's'} Output: {'G', 'e', 'e', 'k', 's'}
以下是執行此操作的各種方法:
- 天真的方法:
- 獲取迭代器。
- 創建一個空列表。
- 使用 forEachRemaining() 方法將迭代器的每個元素添加到列表中。
- 返回列表。
下麵是上述方法的實現:
// Java program to get a List // from a given Iterator import java.util.*; class GFG { // Function to get the List public static <T> List<T> getListFromIterator(Iterator<T> iterator) { // Create an empty list List<T> list = new ArrayList<>(); // Add each element of iterator to the List iterator.forEachRemaining(list::add); // Return the List return list; } // Driver code public static void main(String[] args) { // Get the Iterator Iterator<Integer> iterator = Arrays.asList(1, 2, 3, 4, 5) .iterator(); // Get the List from the Iterator List<Integer> list = getListFromIterator(iterator); // Print the list System.out.println(list); } }
輸出:[1, 2, 3, 4, 5]
- 使用 Iterable 作為中間:
- 獲取迭代器。
- 使用 lambda 表達式將迭代器轉換為可迭代。
- 使用 Stream 將可迭代對象轉換為列表。
- 返回列表。
下麵是上述方法的實現:
// Java program to get a List // from a given Iterator import java.util.*; import java.util.stream.Collectors; import java.util.stream.StreamSupport; class GFG { // Function to get the List public static <T> List<T> getListFromIterator(Iterator<T> iterator) { // Convert iterator to iterable Iterable<T> iterable = () -> iterator; // Create a List from the Iterable List<T> list = StreamSupport .stream(iterable.spliterator(), false) .collect(Collectors.toList()); // Return the List return list; } // Driver code public static void main(String[] args) { // Get the Iterator Iterator<Integer> iterator = Arrays.asList(1, 2, 3, 4, 5) .iterator(); // Get the List from the Iterator List<Integer> list = getListFromIterator(iterator); // Print the list System.out.println(list); } }
輸出:[1, 2, 3, 4, 5]
相關用法
- Java Iterator轉Stream用法及代碼示例
- Java Iterator轉Spliterator用法及代碼示例
- Java Iterator轉Iterable用法及代碼示例
- Java TreeSet iterator()用法及代碼示例
- Java LinkedBlockingDeque iterator()用法及代碼示例
- Java IntStream iterator()用法及代碼示例
- Java AbstractSequentialList iterator()用法及代碼示例
- Java DoubleStream iterator()用法及代碼示例
- Java LongStream iterator()用法及代碼示例
- Java HashSet iterator()用法及代碼示例
- Java PriorityQueue iterator()用法及代碼示例
- Java LinkedBlockingQueue iterator()用法及代碼示例
- Java ArrayDeque iterator()用法及代碼示例
- Java ArrayBlockingQueue iterator()用法及代碼示例
- Java PriorityBlockingQueue iterator()用法及代碼示例
- Java LinkedTransferQueue iterator()用法及代碼示例
- Java ConcurrentSkipListSet iterator()用法及代碼示例
- Java Deque iterator()用法及代碼示例
注:本文由純淨天空篩選整理自RishabhPrabhu大神的英文原創作品 Convert an Iterator to a List in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。