當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java ArrayList轉LinkedList用法及代碼示例


給定一個數組列表,您的任務是編寫一個程序將給定的數組列表轉換為 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]


相關用法


注:本文由純淨天空篩選整理自RishabhPrabhu大神的英文原創作品 Java Program to Convert ArrayList to LinkedList。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。