将ArrayList转换为LinkedList的Java程序

给定一个数组列表,您的任务是编写一个程序,将给定的数组列表转换为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. 链表 是一种线性数据结构,其中元素不存储在连续的内存位置。链接列表中的元素使用指针链接,如下图所示:

图片[1]-将ArrayList转换为LinkedList的Java程序-yiteyi-C++库

方法

在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
喜欢就支持一下吧
点赞13 分享