在Java中将迭代器转换为列表
给定一个迭代器,任务是将其转换为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
List getListFromIterator(Iterator iterator) { // Create an empty list List 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 iterator = Arrays.asList(1, 2, 3, 4, 5) .iterator(); // Get the List from the Iterator List 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
List getListFromIterator(Iterator iterator) { // Convert iterator to iterable Iterable iterable = () -> iterator; // Create a List from the Iterable List 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 iterator = Arrays.asList(1, 2, 3, 4, 5) .iterator(); // Get the List from the Iterator List list = getListFromIterator(iterator); // Print the list System.out.println(list); } } 输出:[1, 2, 3, 4, 5]