给定一个数组列表,您的任务是编写一个程序将给定的数组列表转换为 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中的动态数组。虽然它可能比标准数组慢,但对于需要对数组进行大量操作的程序很有帮助。
链接列表 -A 链表是一种线性数据结构,其中元素不存储在连续的内存位置。链表中的元素使用指针链接,如下图所示:
方法
Java 中有多种方法可以将给定的数组列表转换为链表。下面列出了其中一些。
- 使用暴力或朴素方法
- 使用列表构造函数
- 使用 Java 8 Streams 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 <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 Stream API
此方法包括将 ArrayList 转换为 Stream,并使用接受Collector的 Stream.collect() 方法收集 LinkedList 中的流元素。
算法:
- 获取要转换的ArrayList。
- 将ArrayList转换为流。
- 使用Collector收集 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.使用Google的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 <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() 函数来完成。
- 使用Collector收集 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]
相关用法
- Java ArrayList转LinkedHashSet用法及代码示例
- Java ArrayList转LinkedHashMap用法及代码示例
- Java ArrayList转HashSet用法及代码示例
- Java ArrayList转HashMap用法及代码示例
- Java ArrayList转Vector用法及代码示例
- Java ArrayList add()用法及代码示例
- Java ArrayList addAll()用法及代码示例
- Java ArrayList clear()用法及代码示例
- Java ArrayList clone()用法及代码示例
- Java ArrayList contains()用法及代码示例
- Java ArrayList get()用法及代码示例
- Java ArrayList indexOf()用法及代码示例
- Java ArrayList removeAll()用法及代码示例
- Java ArrayList remove()用法及代码示例
- Java ArrayList size()用法及代码示例
- Java ArrayList isEmpty()用法及代码示例
- Java ArrayList subList()用法及代码示例
- Java ArrayList set()用法及代码示例
- Java ArrayList sort()用法及代码示例
- Java ArrayList toArray()用法及代码示例
- Java ArrayList toString()用法及代码示例
- Java ArrayList ensureCapacity()用法及代码示例
- Java ArrayList lastIndexOf()用法及代码示例
- Java ArrayList retainAll()用法及代码示例
- Java ArrayList containsAll()用法及代码示例
注:本文由纯净天空筛选整理自RishabhPrabhu大神的英文原创作品 Java Program to Convert ArrayList to LinkedList。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。