将 ArrayList 转换为 LinkedList 的Java程序
给定一个数组列表,您的任务是编写一个程序,将给定的数组列表转换为Java中的链表。
例子:
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 是集合框架的一部分,存在于Java.util包中。它为我们提供了Java中的动态数组。虽然,它可能比标准数组慢,但在需要对数组进行大量操作的程序中很有帮助。
链表——链表是一种线性数据结构,其中元素不存储在连续的内存位置。链表中的元素使用指针链接,如下图所示:
方法
有许多方法可以将给定的数组列表转换为Java中的链表。下面列出了其中的一些。
- 使用蛮力或天真的方法
- 使用列表构造函数
- 使用Java 8 流 API
- 使用 Google 的 Guava 库
- 不兼容类型之间的转换
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 List convertALtoLL(List aL)
{
// Create an empty LinkedList
List 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 aL = Arrays.asList("Geeks",
"forGeeks",
"A computer Portal");
// Print the ArrayList
System.out.println("ArrayList: " + aL);
// convert the ArrayList to LinkedList
List
lL = convertALtoLL(aL);
// Print the LinkedList
System.out.println("LinkedList: " + lL);
}
}
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 List convertALtoLL(List aL)
{
// Create the LinkedList by passing the ArrayList
// as parameter in the constructor
List lL = new LinkedList<>(aL);
// Return the converted LinkedList
return lL;
}
public static void main(String args[])
{
// Create an ArrayList
List aL = Arrays.asList("Geeks",
"forGeeks",
"A computer Portal");
// Print the ArrayList
System.out.println("ArrayList: " + aL);
// convert the ArrayList to LinkedList
List
lL = convertALtoLL(aL);
// Print the LinkedList
System.out.println("LinkedList: " + lL);
}
}
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 List convertALtoLL(
List 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 aL = Arrays.asList("Geeks",
"forGeeks",
"A computer Portal");
// Print the ArrayList
System.out.println("ArrayList: " + aL);
// convert the ArrayList to LinkedList
List lL = convertALtoLL(aL);
// Print the LinkedList
System.out.println("LinkedList: " + lL);
}
}
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 List convertALtoLL(List aL)
{
// Create an empty LinkedList
List 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 aL = Arrays.asList("Geeks",
"forGeeks",
"A computer Portal");
// Print the ArrayList
System.out.println("ArrayList: " + aL);
// convert the ArrayList to LinkedList
List
lL = convertALtoLL(aL);
// Print the LinkedList
System.out.println("LinkedList: " + lL);
}
}
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 List convertALtoLL(List 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 aL = Arrays.asList(1, 2, 3, 4, 5);
// Print the ArrayList
System.out.println("ArrayList: " + aL);
// convert the ArrayList to LinkedList
List 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
// 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 List convertALtoLL(List aL)
{
// Create the LinkedList by passing the ArrayList
// as parameter in the constructor
List lL = new LinkedList<>(aL);
// Return the converted LinkedList
return lL;
}
public static void main(String args[])
{
// Create an ArrayList
List aL = Arrays.asList("Geeks",
"forGeeks",
"A computer Portal");
// Print the ArrayList
System.out.println("ArrayList: " + aL);
// convert the ArrayList to LinkedList
List
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
// 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 List convertALtoLL(
List 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 aL = Arrays.asList("Geeks",
"forGeeks",
"A computer Portal");
// Print the ArrayList
System.out.println("ArrayList: " + aL);
// convert the ArrayList to LinkedList
List 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
// 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 List convertALtoLL(List aL)
{
// Create an empty LinkedList
List 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 aL = Arrays.asList("Geeks",
"forGeeks",
"A computer Portal");
// Print the ArrayList
System.out.println("ArrayList: " + aL);
// convert the ArrayList to LinkedList
List
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
// 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 List convertALtoLL(List 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 aL = Arrays.asList(1, 2, 3, 4, 5);
// Print the ArrayList
System.out.println("ArrayList: " + aL);
// convert the ArrayList to LinkedList
List lL = convertALtoLL(aL);
// Print the LinkedList
System.out.println("LinkedList: " + lL);
}
}
输出
ArrayList: [1, 2, 3, 4, 5]
LinkedList: [1, 2, 3, 4, 5]