Javaにおけるリストから配列への変換のコード例解説
Javaにおけるリストから配列への変換
Javaでは、List
インターフェースを実装するクラス(例えば、ArrayList
やLinkedList
)から配列に変換する方法はいくつかあります。
toArray()メソッド
toArray()
メソッドは、List
を指定された型の配列に変換します。- 配列の型が指定されていない場合は、
Object[]
型の配列が返されます。
import java.util.ArrayList;
import java.util.List;
public class ListToArrayExample {
public static void main(String[] args) {
List<Strin g> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
lis t.add("Cherry");
// Object[]型の配列に変換
Object[] array1 = list.toArray();
// String[]型の配列に変換
String[] array2 = list.toArray(new String[list.size()]);
// 配列を表示
System.out.println("array1: " + java.util.Arrays.toString(array1));
System.out.println("array2: " + java.util.Arrays.toString(array2));
}
}
ストリームAPI
- ストリームAPIを使用すると、
List
を配列に変換できます。 toArray()
メソッドは、IntStream
、LongStream
、DoubleStream
などのストリームからプリミティブ型の配列に変換することもできます。
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class ListToArrayExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
lis t.add("Cherry");
// String[]型の配列に変換
String[] array = list.stream().toArray(String[]::new);
// 配列を表示
System.out.println(java.util.Arrays.toString(array));
}
}
ループによる変換
- 手動でループを使用して、
List
の要素を配列にコピーすることもできます。 - しかし、この方法は効率が低く、エラーが発生する可能性があります。
import java.util.ArrayList;
import java.util.List;
public class ListToArrayExample {
public static void main(String[] args) {
List<Strin g> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
lis t.add("Cherry");
// String[]型の配列を作成
String[] array = new String[list.size()];
// ループを使用してコピー
for (int i = 0; i < list.size(); i++) {
array[i] = list.get(i);
}
// 配列を表示
System.out.println(java.util.Arrays.toString(array));
}
}
import java.util.ArrayList;
import java.util.List;
public class ListToArrayExample {
public static void main(String[] args) {
List<Strin g> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
lis t.add("Cherry");
// Object[]型の配列に変換
Object[] array1 = list.toArray();
// String[]型の配列に変換
String[] array2 = list.toArray(new String[list.size()]);
// 配列を表示
System.out.println("array1: " + java.util.Arrays.toString(array1));
System.out.println("array2: " + java.util.Arrays.toString(array2));
}
}
- コード解説:
ArrayList
を使用して、文字列のリストを作成します。toArray()
メソッドを使用して、リストを配列に変換します。- 第1引数に何も指定しない場合、
Object[]
型の配列が返されます。 - 第1引数に配列を指定した場合、その配列の型に合わせた配列が返されます。
Arrays.toString()
メソッドを使用して、配列の内容を表示します。
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class ListToArrayExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
lis t.add("Cherry");
// String[]型の配列に変換
String[] array = list.stream().toArray(String[]::new);
// 配列を表示
System.out.println(java.util.Arrays.toString(array));
}
}
- コード解説:
List
をストリームに変換します。toArray(String[]::new)
メソッドを使用して、ストリームをString[]
型の配列に変換します。String[]::new
は、String[]
型の配列を生成するラムダ式です。
import java.util.ArrayList;
import java.util.List;
public class ListToArrayExample {
public static void main(String[] args) {
List<Strin g> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
lis t.add("Cherry");
// String[]型の配列を作成
String[] array = new String[list.size()];
// ループを使用してコピー
for (int i = 0; i < list.size(); i++) {
array[i] = list.get(i);
}
// 配列を表示
System.out.println(java.util.Arrays.toString(array));
}
}
- コード解説:
List
のサイズに合わせて配列を作成します。- ループを使用して、リストの要素を配列にコピーします。
- この方法は、効率が低く、エラーが発生する可能性があるため、一般的には推奨されません。
System.arraycopy()メソッド
System.arraycopy()
メソッドは、配列から配列へのコピーを効率的に行います。List
を配列に変換する場合、事前に配列を作成し、System.arraycopy()
メソッドを使用してコピーすることができます。
import java.util.ArrayList;
import java.util.List;
public class ListToArrayExample {
public static void main(String[] args) {
List<Strin g> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
lis t.add("Cherry");
// String[]型の配列を作成
String[] array = new String[list.size()];
// System.arraycopy()を使用してコピー
System.arraycopy(list.toArray(), 0, array, 0, list.size());
// 配列を表示
System.out.println(java.util.Arrays.toString(array));
}
}
Collections.copy()メソッド
Collections.copy()
メソッドは、List
からList
へのコピーを効率的に行います。List
を配列に変換する場合、事前に配列をArrayList
に変換し、Collections.copy()
メソッドを使用してコピーすることができます。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ListToArrayExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
lis t.add("Cherry");
// String[]型の配列を作成
String[] array = new String[list.size()];
// ArrayListに変換
List<String> arrayList = new ArrayList<>(array.length);
Collections.copy(arrayList, list);
// 配列にコピー
array = arrayList.toArray(array);
// 配列を表示
System.out.println(java.util.Arrays.toString(array));
}
}
Apache Commons LangのArrayUtilsクラス
Apache Commons Lang
ライブラリのArrayUtils
クラスには、配列に関するユーティリティメソッドが多数含まれています。ArrayUtils.toArray()
メソッドを使用して、List
を配列に変換することができます。
import org.apache.commons.lang3.ArrayUtils;
import java.util.ArrayList;
import java.util.List;
public class ListToArrayExample {
public static void main(String[] args) {
List<Strin g> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
lis t.add("Cherry");
// String[]型の配列に変換
String[] array = ArrayUtils.toArray(list);
// 配列を表示
System.out.println(java.util.Arrays.toString(array));
}
}
java arrays list