给定一个数组列表,您的任务是编写一个程序,将给定的数组列表转换为Java中的链表。
null
例如:
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- 一 ArrayList 是集合框架的一部分,存在于 JAVAutil 包裹它用Java为我们提供了动态数组。不过,它可能比标准数组慢,但在需要对数组进行大量操作的程序中可能会有所帮助。
链表- A. 链表 是一种线性数据结构,其中元素不存储在连续的内存位置。链接列表中的元素使用指针链接,如下图所示:
方法
在Java中,有许多方法可以将给定的数组列表转换为链表。下面列出了其中一些。
- 使用暴力或天真的方法
- 使用列表构造函数
- 使用Java8流API
- 使用谷歌的番石榴图书馆
- 不兼容类型之间的转换
1.使用暴力或天真的方法
在这个方法中,将创建一个空的LinkedList,并将ArrayList中的所有元素逐个添加到其中。
算法 :
- 获取要转换的ArrayList。
- 创建一个空的LinkedList。
- 遍历ArrayList中的项。
- 对于每个项目,将其添加到LinkedList。
- 返回形成的LinkedList。
代码:
JAVA
// 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。
- 通过在LinkedList的构造函数中将ArrayList作为参数传递来创建LinkedList。
- 返回形成的LinkedList。
代码:
JAVA
// 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流API
此方法包括将ArrayList转换为流,并使用Stream在LinkedList中收集流的元素。collect()方法,该方法接受收集器。
算法 :
- 获取要转换的ArrayList。
- 将ArrayList转换为流。
- 使用收集器,收集ArrayList流并将其转换为LinkedList。
- 现在收集LinkedList。
- 返回形成的LinkedList。
代码:
JAVA
// 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还提供了LinkedList实现,可用于使用collection从另一个集合创建LinkedList。addAll()方法。
算法 :
- 获取要转换的ArrayList。
- 创建一个空的LinkedList。
- 使用LinkedList将ArrayList的元素添加到LinkedList中。方法并将ArrayList作为参数传递。
- 返回形成的LinkedList。
代码:
JAVA
// 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.不兼容类型之间的转换
如果所需的树映射与HashMap的类型不同,则可以使用此方法。在这种情况下,转换需要手动完成。
算法 :
- 获取要转换的ArrayList。
- 将ArrayList转换为流。
- 通过强制转换将流元素转换为所需的类型。这可以通过将casting函数作为参数传递给map()函数来实现。
- 使用收集器,收集ArrayList流并将其转换为LinkedList。
- 现在收集LinkedList。
- 返回形成的LinkedList。
代码:
JAVA
// 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]
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END