Java で ArrayList を int 型配列に変換する
プリミティブデータ型(定義されたサイズのデータ型で、byte、char、short、int などの同様の型のデータを含む)とクラスオブジェクトの両方を配列に格納できます。
一方、ArrayList に格納できるのはクラスオブジェクトのみです。また、ArrayList には動的な長さがあり、要素の数に応じて増減できます。
この記事では、Java で配列リストを int 配列に変換するさまざまな方法について説明します。
Arraylist を Int 配列に変換する必要があります
ArrayList を使用して、配列を使用して実行されるすべての操作を実行できます。
ただし、ArrayList は、さまざまな操作の実行が比較的遅いです。これは、ArrayList に get()
、put()
、resize()
などのアクションのコレクションがあり、これらすべてが CPU 時間とメモリ使用率に影響を与えるためです。
固定サイズのデータに対してのみ一部のアクションを実行する必要がある場合は、常に ArrayList ではなく Arrays を使用する必要があります。
Arraylist を Int 配列に変換する方法
整数の ArrayList が与えられていると仮定します。ArrayList を int 配列に変換する必要があります。これは、for
ループ、Object[] toArray()
メソッド、T[] toArray()
メソッド、および mapToInt()
メソッドを使用して実行できます。
それぞれのアプローチについて 1つずつ説明していきましょう。
for
ループを使用した Arraylist から Int 配列への変換
for ループを使用して ArrayList を int 配列に手動で変換できます。ArrayList が与えられた場合、最初に ArrayList と同じサイズの int 配列を宣言します。
size()
関数を使用して、ArrayList のサイズを計算できます。これで、データ要素を ArrayList から int 配列にコピーできます。
このために、get()
メソッドと for ループを使用して ArrayList 要素をトラバースします。以下の solve()
関数でこのアプローチを実装しました。
それがどのように機能するかを理解するために、以下のコードを見てみましょう。
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void solve(List<Integer> nums) {
int[] arr = new int[nums.size()];
for (int i = 0; i < nums.size(); i++) {
arr[i] = nums.get(i);
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
List<Integer> nums = new ArrayList<Integer>();
nums.add(10);
nums.add(20);
nums.add(30);
nums.add(40);
nums.add(50);
System.out.println("ArrayList elements");
for (int i = 0; i < nums.size(); i++) {
System.out.println(nums.get(i));
}
System.out.println("Array elements");
solve(nums); // ArrayList to Array Conversion
}
}
出力:
ArrayList elements
10
20
30
40
50
Array elements
10
20
30
40
50
Object[] toArray()
関数を使用した Arraylist から Int 配列への変換
Object[] toArray()
関数を使用して、Java で ArrayList を int 配列に変換することもできます。
ArrayList を指定した場合、最初に Object オブジェクトを作成し、toArray()
関数を使用します。toArray()
メソッドは Object 型の配列を返すことに注意してください。
これを排除するには、コンパイルエラーを回避するために、目的のデータ型(この場合は int)に型キャストする必要があります。以下の solve()
関数でこのアプローチを実装しました。
それがどのように機能するかを理解するために、以下のコードを見てみましょう。
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void solve(List<Integer> nums) {
Object[] obj_arr = nums.toArray();
int[] arr = new int[nums.size()];
for (int i = 0; i < obj_arr.length; i++) {
arr[i] = (int) obj_arr[i];
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
List<Integer> nums = new ArrayList<Integer>();
nums.add(10);
nums.add(20);
nums.add(30);
nums.add(40);
nums.add(50);
System.out.println("ArrayList elements");
for (int i = 0; i < nums.size(); i++) {
System.out.println(nums.get(i));
}
System.out.println("Array elements");
solve(nums); // ArrayList to Array Conversion
}
}
出力:
ArrayList elements
10
20
30
40
50
Array elements
10
20
30
40
50
T[] toArray
関数を使用した Arraylist から Int 配列への変換
T[] toArray()
関数を使用して、Java で ArrayList を int 配列に変換することもできます。ArrayList を指定した場合、最初に Integer オブジェクトを作成し、toArray()
関数を使用します。
この方法では、配列が十分に大きくない場合、同じタイプの新しい配列がこの目的のために割り当てられます。以下の solve()
関数でこのアプローチを実装しました。
それがどのように機能するかを理解するために、以下のコードを見てみましょう。
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void solve(List<Integer> nums) {
Integer[] int_arr = new Integer[nums.size()];
int_arr = nums.toArray(int_arr);
int[] arr = new int[nums.size()];
for (int i = 0; i < int_arr.length; i++) {
arr[i] = int_arr[i];
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
List<Integer> nums = new ArrayList<Integer>();
nums.add(10);
nums.add(20);
nums.add(30);
nums.add(40);
nums.add(50);
System.out.println("ArrayList elements");
for (int i = 0; i < nums.size(); i++) {
System.out.println(nums.get(i));
}
System.out.println("Array elements");
solve(nums); // ArrayList to Array Conversion
}
}
出力:
ArrayList elements
10
20
30
40
50
Array elements
10
20
30
40
50
mapToInt()
関数を使用した Arraylist から Int 配列への変換
リストの streams()
メソッドを mapToInt()
関数と組み合わせて、Java で ArrayList を int 配列に変換することもできます。この関数は、ArrayList のデータをプリミティブ整数値に変換します。これは、ArrayList を Java 8 以降でアクセス可能な整数配列に変換するための新しく魅力的な方法です。
ArrayList が指定されている場合は、最初に、指定された ArrayList で stream()
関数を呼び出します。その後、結果で構成される整数ストリームを返す mapToInt()
メソッドを呼び出します。
その後、toArray()
メソッドを呼び出します。このメソッドは、抽出された結果を int 配列に変換します。以下の solve()
関数でこのアプローチを実装しました。
それがどのように機能するかを理解するために、以下のコードを見てみましょう。
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void solve(List<Integer> nums) {
int[] arr = nums.stream().mapToInt(i -> i).toArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
List<Integer> nums = new ArrayList<Integer>();
nums.add(10);
nums.add(20);
nums.add(30);
nums.add(40);
nums.add(50);
System.out.println("ArrayList elements");
for (int i = 0; i < nums.size(); i++) {
System.out.println(nums.get(i));
}
System.out.println("Array elements");
solve(nums); // ArrayList to Array Conversion
}
}
出力:
ArrayList elements
10
20
30
40
50
Array elements
10
20
30
40
50
関連記事 - Java Array
- Java で 16 進文字列のバイト配列を変換する方法
- Java で 2つの配列を連結する方法
- Java の配列から重複を削除する
- Java で 2D 配列を埋める
- Java で配列のサブセットを取得する
- Java の自然順序付け