Java 把一个迭代器转换成一个列表

Java 把一个迭代器转换成一个列表

给定一个Iterator,任务是在Java中把它转换成List。

例子。

输入: Iterator = {1, 2, 3, 4, 5}
输出: {1, 2, 3, 4, 5}

输入: Iterator = {‘G’, ‘e’, ‘e’, ‘k’, ‘s’}
输出: {‘G’, ‘e’, ‘e’, ‘k’, ‘s’}

以下是各种方法。

  • Naive 方法 :
    1. 获取迭代器。
    2. 创建一个空列表。
    3. 使用forEachRemaining()方法将迭代器的每个元素添加到列表中。
    4. 返回该列表。

下面是上述方法的实现。

// 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作为中间环节。
    1. 获取Iterator。
    2. 使用lambda表达式将迭代器转换为可迭代器。
    3. 使用Stream将可迭代器转换为列表。
    4. 返回该列表。

下面是上述方法的实现。

// 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]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程