Open In App

Java Program to Convert ArrayList to LinkedList

Given an array list, your task is to write a program to convert the given array list to Linked List in Java. 

Examples: 



Input: ArrayList: [Geeks, forGeeks, A computer Portal] 
Output: LinkedList: [Geeks, forGeeks, A computer Portal]
Input: ArrayList: [1, 2, 3, 4, 5] 
Output: LinkedList: [1, 2, 3, 4, 5] 

ArrayList – An ArrayList is a part of the collection framework and is present in java.util package. It provides us dynamic arrays in Java. Though, it may be slower than standard arrays but can be helpful in programs where lots of manipulation in the array is needed.

Linked List – A linked list is a linear data structure, in which the elements are not stored at contiguous memory locations. The elements in a linked list are linked using pointers as shown in the below image: 
 



Approaches

There are numerous approaches to convert the given array list to a linked list in Java. A few of them are listed below.

1. Using Brute Force or Naive Method

In this method, an empty LinkedList is created and all elements present of the ArrayList are added to it one by one.

Algorithm

Code:




// Java Program to convert
// ArrayList to LinkedList 
// using Naive method
  
import java.util.*;
import java.util.stream.*;
  
class GFG {
  
    // Generic function to convert an ArrayList to LinkedList
    public static <T> List<T> convertALtoLL(List<T> aL)
    {
  
        // Create an empty LinkedList
        List<T> lL = new LinkedList<>();
  
        // Iterate through the aL
        for (T t : aL) {
  
            // Add each element into the lL
            lL.add(t);
        }
  
        // Return the converted LinkedList
        return lL;
    }
  
    public static void main(String args[])
    {
        // Create an ArrayList
        List<String> aL = Arrays.asList("Geeks",
                                    "forGeeks",
                                    "A computer Portal");
  
        // Print the ArrayList
        System.out.println("ArrayList: " + aL);
  
        // convert the ArrayList to LinkedList
        List<String>
            lL = convertALtoLL(aL);
  
        // Print the LinkedList
        System.out.println("LinkedList: " + lL);
    }
}

Output
ArrayList: [Geeks, forGeeks, A computer Portal]
LinkedList: [Geeks, forGeeks, A computer Portal]

2. Using List Constructor

In this method, the ArrayList is passed as the parameter into the LinkedList constructor.

Algorithm

Code:




// Java Program to convert
// ArrayList to LinkedList
// using List Constructor
  
import java.util.*;
import java.util.stream.*;
  
class GFG {
  
    // Generic function to convert an ArrayList to LinkedList
    public static <T> List<T> convertALtoLL(List<T> aL)
    {
  
        // Create the LinkedList by passing the ArrayList
        // as parameter in the constructor
        List<T> lL = new LinkedList<>(aL);
  
        // Return the converted LinkedList
        return lL;
    }
  
    public static void main(String args[])
    {
        // Create an ArrayList
        List<String> aL = Arrays.asList("Geeks",
                                    "forGeeks",
                                    "A computer Portal");
  
        // Print the ArrayList
        System.out.println("ArrayList: " + aL);
  
        // convert the ArrayList to LinkedList
        List<String>
            lL = convertALtoLL(aL);
  
        // Print the LinkedList
        System.out.println("LinkedList: " + lL);
    }
}

Output
ArrayList: [Geeks, forGeeks, A computer Portal]
LinkedList: [Geeks, forGeeks, A computer Portal]

3. Using Java 8 Stream API 

This method includes converting the ArrayList to a Stream and collect elements of a stream in a LinkedList using Stream.collect() method which accepts a collector.

Algorithm

Code:




// Java Program to convert
// ArrayList to LinkedList
// using Streams API
  
import java.util.*;
import java.util.stream.*;
  
class GFG {
  
    // Generic function to convert an
    // ArrayList to LinkedList
    public static <T> List<T> convertALtoLL(
                                        List<T> aL)
    {
  
        // Return the converted LinkedList
        return aL
  
            // Convert the ArrayList into Stream
            .stream()
  
            // Collect the LinkedList
            .collect(Collectors
  
            // Convert the Stream into LinkedList
            // Collection type
            .toCollection(LinkedList::new));
    }
  
    public static void main(String args[])
    {
        // Create an ArrayList
        List<String> aL = Arrays.asList("Geeks",
                                        "forGeeks",
                                        "A computer Portal");
  
        // Print the ArrayList
        System.out.println("ArrayList: " + aL);
  
        // convert the ArrayList to LinkedList
        List<String> lL = convertALtoLL(aL);
  
        // Print the LinkedList
        System.out.println("LinkedList: " + lL);
    }
}

Output
ArrayList: [Geeks, forGeeks, A computer Portal]
LinkedList: [Geeks, forGeeks, A computer Portal]

4. Using Google’s Guava library

Guava also provides a LinkedList implementation which can be used to create a LinkedList from another collection using Collection.addAll() method.

Algorithm

Code:




// Java Program to convert
// ArrayList to LinkedList
// using Google's Guave library
  
import java.util.*;
import java.util.stream.*;
  
class GFG {
  
    // Generic function to convert an ArrayList
    // to LinkedList
    public static <T> List<T> convertALtoLL(List<T> aL)
    {
  
        // Create an empty LinkedList
        List<T> lL = new LinkedList<>();
  
        // Add ArrayList into the lL
        lL.addAll(aL);
  
        // Return the converted LinkedList
        return lL;
    }
  
    public static void main(String args[])
    {
        // Create an ArrayList
        List<String> aL = Arrays.asList("Geeks",
                                    "forGeeks",
                                    "A computer Portal");
  
        // Print the ArrayList
        System.out.println("ArrayList: " + aL);
  
        // convert the ArrayList to LinkedList
        List<String>
            lL = convertALtoLL(aL);
  
        // Print the LinkedList
        System.out.println("LinkedList: " + lL);
    }
}

Output
ArrayList: [Geeks, forGeeks, A computer Portal]
LinkedList: [Geeks, forGeeks, A computer Portal]

5. Conversion between incompatible types

This method can be used if the required TreeMap is of the different type than the HashMap. In this, the conversion needs to be done manually.

Algorithm

Code:




// Java Program to convert
// ArrayList to LinkedList for
// Conversion between incompatible types
  
import java.util.*;
import java.util.stream.*;
  
class GFG {
  
    // Generic function to convert an ArrayList to LinkedList
    public static <T> List<String> convertALtoLL(List<T> aL)
    {
  
        // Return the converted LinkedList
        return aL
  
            // Convert the ArrayList into Stream
            .stream()
  
            // Convert the Stream into String
            // Desired casting function can be passed
            // as parameter in next step
            .map(String::valueOf)
  
            // Collect the LinkedList
            .collect(Collectors
  
            // Convert the Stream into LinkedList
            // Collection type
            .toCollection(LinkedList::new));
    }
  
    public static void main(String args[])
    {
        // Create an ArrayList
        List<Integer> aL = Arrays.asList(1, 2, 3, 4, 5);
  
        // Print the ArrayList
        System.out.println("ArrayList: " + aL);
  
        // convert the ArrayList to LinkedList
        List<String> lL = convertALtoLL(aL);
  
        // Print the LinkedList
        System.out.println("LinkedList: " + lL);
    }
}

Output
ArrayList: [1, 2, 3, 4, 5]
LinkedList: [1, 2, 3, 4, 5]

Article Tags :