Java程序 将ArrayList转换为LinkedList

Java程序 将ArrayList转换为LinkedList

给定一个ArrayList,你的任务是编写一个程序,将给定的ArrayList转换为Java中的LinkedList。

例子

输入: ArrayList: [Geeks, forGeeks, A computer Portal]
输出: LinkedList: [Geeks, forGeeks, A computer Portal]
输入: ArrayList: [1, 2, 3, 4, 5]
输出: LinkedList: [1, 2, 3, 4, 5]

ArrayList – ArrayList是集合框架的一部分,存在于 java.util 包中。它为我们提供了Java中的动态数组。尽管它可能比标准数组慢,但在需要对数组进行大量操作的程序中是有帮助的。

链接列表 – 链接列表是一种线性数据结构,其中的元素不存储在连续的内存位置。链接列表中的元素使用指针进行链接,如下图所示:

将ArrayList转换为LinkedList的Java程序

方法

Java 中,有许多方法可以将给定的ArrayList转换为链接列表。下面列出了其中的几种。

  • 使用蛮力或天真方法
  • 使用列表构造器
  • 使用Java 8 Streams API
  • 使用谷歌的Guava库
  • 不兼容类型之间的转换

1.使用蛮力法或天真法

在这个方法中,创建一个空的LinkedList,然后将ArrayList中的所有元素一个一个地添加到其中。

算法:

  • 获取要转换的ArrayList。
  • 创建一个空的LinkedList。
  • 遍历ArrayList中的项目。
  • 对于每个项目,将其添加到LinkedList中。
  • 返回形成的LinkedList。

代码

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

输出

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

2.使用列表构造函数

在这个方法中,ArrayList被作为参数传递给LinkedList构造函数。

算法:

  • 获取要转换的ArrayList。
  • 通过将ArrayList作为参数传递给LinkedList的构造函数来创建LinkedList。
  • 返回形成的LinkedList。

代码

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

输出

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

3.使用Java 8 Stream API

该方法包括将ArrayList转换为Stream,并使用Stream.collect()方法收集LinkedList中的元素,该方法接受一个收集器。

算法:

  • 获取要转换的ArrayList。
  • 将ArrayList转换为流。
  • 使用收集器,收集ArrayList流并将其转换为LinkedList。
  • 现在收集LinkedList。
  • 返回形成的LinkedList。

代码

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

输出

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

4.使用谷歌的Guava库

Guava也提供了一个LinkedList的实现,可以使用Collection.addAll()方法从另一个集合创建一个LinkedList。

算法:

  • 获取要转换的ArrayList。
  • 创建一个空的LinkedList。
  • 使用LinkedList.addAll()方法将ArrayList中的元素添加到LinkedList中,并将ArrayList作为参数。
  • 返回形成的LinkedList。

代码

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

输出

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

5.不兼容类型之间的转换

如果需要的TreeMap与HashMap的类型不同,可以使用该方法。在这种情况下,转换需要手动完成。

算法:

  • 获取要转换的ArrayList。
  • 将ArrayList转换为流。
  • 通过转换将流元素转换为所需类型。这可以通过将铸造函数作为参数传递给map()函数来完成。
  • 使用收集器,收集ArrayList流并将其转换为LinkedList。
  • 现在收集LinkedList。
  • 返回形成的LinkedList。

代码

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

输出

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程