Java LinkedList toArray() メソッド
toArray()はJavaのLinkedListクラスが提供するユーティリティメソッドで、リンクリスト内のすべての要素を配列に変換するために使用されます。このメソッドはjava.util.LinkedListクラスに属し、継承元はjava.util.AbstractCollectionクラスです。
メソッド構文
LinkedListクラスは2つのtoArray()メソッドのオーバーロード形式を提供しています:
基本形式:
Object[] toArray()
ジェネリック形式:
<T> T[] toArray(T[] a)
メソッドの詳細
基本形式 toArray()
例
Object[] toArray()
このメソッドは、LinkedList内のすべての要素を含むObject配列を返します。配列内の要素の順序は、リンクリスト内の要素の反復順序と同じです。
特徴:
- 返されるのは
Object[]型の配列 - 新しい配列は元の
LinkedList相互に独立しています - 返された配列を変更しても、元の
LinkedList
サンプルコード:
例
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
Object[] array = list.toArray();
for (Object item : array) {
System.out.println(item);
}
}
}
public class Main {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
Object[] array = list.toArray();
for (Object item : array) {
System.out.println(item);
}
}
}
ジェネリック形式 toArray(T[] a)
例
<T> T[] toArray(T[] a)
このメソッドは返される配列の型を指定でき、基本形式よりも柔軟で安全です。
パラメータ:
a:配列が十分に大きい場合は要素をこの配列に格納します。それ以外の場合は、同じ実行時型の新しい配列を割り当てます
戻り値:
- 含む
LinkedListすべての要素を含む配列 - 指定した配列が十分に大きい場合はその配列を返します
- それ以外の場合は、新しく割り当てられた配列を返します
サンプルコード:
例
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
String[] array = list.toArray(new String[0]);
for (String item : array) {
System.out.println(item);
}
}
}
public class Main {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
String[] array = list.toArray(new String[0]);
for (String item : array) {
System.out.println(item);
}
}
}
使用場面
toArray()メソッドは以下の場合に特に役立ちます:
- リンクリストを
LinkedList固定サイズの配列に変換する必要がある場合 - 一部のAPIやメソッドが引数として配列のみを受け付ける場合
- コレクションの要素に対して配列固有の操作を行う必要がある場合
- 特定の操作のパフォーマンスを向上させる必要がある場合(配列へのアクセスは通常、リンクリストへのアクセスよりも高速です)
注意事項
- 型安全性:基本形式の
toArray()が返すObject[]は、型変換が必要な場合があります - 配列サイズ:ジェネリック形式の場合、渡された配列が小さすぎると、自動的に新しい配列が作成されます。渡された配列が大きすぎる場合は、余分な位置は
null - パフォーマンスの考慮事項:頻繁な変換はパフォーマンスに影響を与える可能性があります。特に大規模なコレクションでは顕著です
- 並行変更:変換中にコレクションが変更された場合、
ConcurrentModificationException
ベストプラクティス
- ジェネリック形式を使用する:優先的に
toArray(T[] a)を使用して、型安全な配列を取得します - 配列サイズの指定:使用して
list.size()適切なサイズの配列を作成できます - 空配列イディオム:
toArray(new String[0])は一般的で効率的な使用方法です
推奨される書き方:
例
LinkedList<String> list = new LinkedList<>();
// 要素を追加...
// ベストプラクティス:空配列をパラメータとして使用
String[] array = list.toArray(new String[0]);
// またはサイズを明示的に指定
String[] sizedArray = list.toArray(new String[list.size()]);
// 要素を追加...
// ベストプラクティス:空配列をパラメータとして使用
String[] array = list.toArray(new String[0]);
// またはサイズを明示的に指定
String[] sizedArray = list.toArray(new String[list.size()]);
まとめ
LinkedListのtoArray()このメソッドは、リンクリストを配列に変換する便利な方法を提供します。これら2つの形式(基本形式とジェネリック形式)の違いと適用場面を理解することで、より効率的で安全なコードを作成できます。実際の開発では、より優れた型安全性を得るためにジェネリック形式の使用を推奨します。