在 Java 中將集合轉換為列表

Dhruvdeep Singh Saini 2023年1月30日 2022年4月22日
  1. 在 Java 中使用建構函式將集合轉換為列表
  2. 在 Java 中使用內建函式將集合轉換為列表
  3. 在 Java 中使用 for 迴圈將集合轉換為列表
  4. 在 Java 中使用 collect 將集合轉換為列表
在 Java 中將集合轉換為列表

本文將介紹和討論在 Java 中將集合轉換為列表的不同方法。

在 Java 中使用建構函式將集合轉換為列表

我們可以使用建構函式,並在引數中提供我們要轉換的集合。

語法:

List<Generic> listname = new ArrayList<>(collectionName);

例子:

import java.util.*;
public class ExpHStoLL
{
    public static void main(String[] args)
    {
        Set<String> hs = new HashSet<String>();
        //Adding names in hs
        hs.add("Dhruv");
        hs.add("Sahil");
        hs.add("Ajay");
        System.out.println("Hash Set Collection :"+hs);

        //Using constructor of hs for linked list
        List<String> MyList = new LinkedList<String>(hs);
        System.out.println ("\nLinked List after conversion: " + MyList);
    }
}

輸出:

Hash Set Collection :[Dhruv, Sahil, Ajay]
Linked List after conversion: [Dhruv, Sahil, Ajay]

在這裡,我們建立了一個名稱的雜湊集,然後使用建構函式 hs 從雜湊集建立一個列表。

在 Java 中使用內建函式將集合轉換為列表

在 Array 和 Collections 類中有兩種內建方法可以將集合轉換為列表。

在 Java 中使用 asList 將集合轉換為列表

Array 類提供了 asList() 方法來將陣列集合轉換為列表。

語法:

List<Generic> MyList = Arrays.asList(ArrayName);

例子:

import java.util.*;
public class ExpArrtoL
{
    public static void main(String args[])
    {
        String[] MyArray = { "Dhruv", "Sahil", "Ajay" };
        System.out.println("My Array: " + Arrays.toString(MyArray));

        //Using asList function
        List<String> MyList = Arrays.asList(MyArray);
        System.out.println("List using asList(): " + MyList);
    }
}

輸出:

My Array: [Dhruv, Sahil, Ajay]
List using asList(): [Dhruv, Sahil, Ajay]

在上面的程式碼中,我們建立了一個陣列,然後使用陣列名稱為 MyArrayasList() 函式作為引數將集合轉換為列表。

在 Java 中使用 addAll 將集合轉換為列表

addAll() 是集合框架中提供的一個方法,我們可以使用它來將集合轉換為列表。集合中的元素可以一一指定,也可以指定為陣列。

這類似於 asList() 方法,但效能更好,有效地提高了時間複雜度。在使用此方法之前,我們必須同時建立一個陣列和一個列表,因為它需要兩個引數才能將專案從集合複製到列表。

語法:

Collections.addAll(ListName, ArrayName);

例子:

import java.util.*;
public class ExpArrtoL
{
    public static void main(String args[])
    {
        String[] MyArray = { "Dhruv", "Sahil", "Ajay" };
        System.out.println("My Array: " + Arrays.toString(MyArray));
        List<String> MyList = new ArrayList<>();

        //Using addAll function
        Collections.addAll(MyList, MyArray);
        System.out.println("List using addAll(): " + MyList);
    }
}

輸出:

My Array: [Dhruv, Sahil, Ajay]
List using addAll(): [Dhruv, Sahil, Ajay]

在 Java 中使用 for 迴圈將集合轉換為列表

如果我們不想使用建構函式或內建函式,for-each 迴圈可以幫助將集合轉換為列表。這種方法對初學者很友好,因為它提供了一種簡單的轉換方式。

例子:

import java.util.*;
public class ListUsingForLoop
{
    public static void main(String[] args)
    {
        Set<String> hs = new HashSet<String>();
        hs.add("Dhruv");
        hs.add("Sahil");
        hs.add("Ajay");
        System.out.println("Our HashSet HS:"+hs);

        //List of the same size as our HashSet hs
        List<String> MyList = new ArrayList<String>(hs.size());

        //The loop picks each string of HS and adds it to the List
        for (String x : hs)
        MyList.add(x);
        System.out.println("\nList made from HS:" + MyList);
    }
}

輸出:

Our HashSet HS:[Dhruv, Sahil, Ajay]

List made from HS:[Dhruv, Sahil, Ajay]

在這裡,我們建立了一個名稱的雜湊集,並將它們用於每個迴圈,以指定對於雜湊集 hs 中找到的每個字串,我們將字串新增到我們的列表 MyList 中。

在 Java 中使用 collect 將集合轉換為列表

我們還可以使用流的 collect() 函式將集合轉換為列表並顯示結果,而無需編輯原始集合。

collect() 方法從資料結構或集合中收集元素,併為操作它們提供額外的邏輯。

語法:

List<Generic> ListName = CollectionName.stream().collect(toList());

例子:

import java.util.*;
import java.util.stream.*;
public class ExpHStoLL
{
    public static void main(String[] args)
    {
        Set<String> hs = new HashSet<String>();
        //Adding names in hs
        hs.add("Dhruv");
        hs.add("Sahil");
        hs.add("Ajay");
        System.out.println("Hash Set Collection :"+hs);

        List<String> MyList = hs.stream().collect(Collectors.toList());
        System.out.println ("\nConverted to List: " + MyList);
    }
}

輸出:

Hash Set Collection :[Dhruv, Sahil, Ajay]
Converted to List: [Dhruv, Sahil, Ajay]

在使用流 API 的 collect() 方法將集合轉換為列表時,複製是使用引用完成的。

由於列表是一種引用資料型別,即它儲存了實際物件或元素的引用地址,因此對列表的任何更改也會改變我們的集合。

從原始集合建立的副本列表是淺副本。這意味著刪除列表也會從原始集合中刪除元素。

我們可以通過建立深拷貝來避免這種情況,其中將集合複製到列表會導致為列表分配新的記憶體,而不僅僅是複製舊的引用。

相關文章 - Java List

相關文章 - Java Collection