Javaでコレクションをリストに変換する

Dhruvdeep Singh Saini 2023年10月12日
  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 クラスのコレクションをリストに変換するための 2つの組み込みメソッドがあります。

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]

上記のコードでは、配列を作成し、配列名 MyArray を引数として持つ asList() 関数を使用して、コレクションをリストに変換しました。

Java で addAll を使用してコレクションをリストに変換する

addAll() は、コレクションをリストに変換するために使用できるコレクションフレームワークで提供されるメソッドです。コレクションの要素は、1つずつまたは配列として指定できます。

これは asList() メソッドに似ていますが、パフォーマンスが向上し、時間の複雑さが効果的に改善されます。コレクションからリストにアイテムをコピーするには 2つのパラメーターが必要なため、このメソッドを使用する前に、配列とリストの両方を作成する必要があります。

構文:

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