Related Articles

Related Articles

Convert an Iterator to a List in Java
  • Last Updated : 11 Dec, 2018

Given an Iterator, the task is to convert it into List in Java.

Examples:

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'}

Below are the various ways to do so:

  • Naive Approach:
    1. Get the Iterator.
    2. Create an empty list.
    3. Add each element of the iterator to the list using forEachRemaining() method.
    4. Return the list.

    Below is the implementation of the above approach:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // 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);
        }
    }

    chevron_right

    
    

    Output:



    [1, 2, 3, 4, 5]
    
  • Using Iterable as intermediate:
    1. Get the Iterator.
    2. Convert the iterator to iterable using lambda expression.
    3. Convert the iterable to list using Stream.
    4. Return the list.

    Below is the implementation of the above approach:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // 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);
        }
    }

    chevron_right

    
    

    Output:

    [1, 2, 3, 4, 5]
    

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :