給定一個數組列表,您的任務是編寫一個程序將給定的數組列表轉換為 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。