C#でLinkedListの全要素を配列にコピーする方法
C#のLinkedList<T>クラスには、リンクリストの全要素を既存の配列へコピーするためのCopyTo()メソッドが用意されています。このメソッドを使うと、指定したインデックスを起点として、LinkedListの要素を1次元配列に順番にコピーできます。
CopyTo()メソッドの基本構文
CopyToメソッドは以下のように定義されています。
public void CopyTo(T[] array, int index);
- array: コピー先となる1次元配列
- index: コピーを開始する配列内の位置(0から始まるインデックス)
例1:配列の先頭からコピーする場合
次の例では、3つの整数を持つLinkedListを作成し、サイズ5のint型配列の先頭(インデックス0)からコピーしています。
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
LinkedList<int> list = new LinkedList<int>();
list.AddLast(100);
list.AddLast(200);
list.AddLast(300);
int[] strArr = new int[5];
list.CopyTo(strArr, 0);
foreach(int str in strArr){
Console.WriteLine(str);
}
}
}
出力結果
上記のコードを実行すると、次のような出力が得られます。配列サイズが5に対してコピーされる要素は3つなので、残りの2つは初期値の0のままになっている点に注目してください。
100 200 300 0 0
例2:配列の中間位置からコピーする場合
続いて、開始インデックスを4に指定した例を見てみましょう。LinkedListの要素は、配列の5番目(インデックス4)以降にコピーされます。
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
LinkedList<int> list = new LinkedList<int>();
list.AddLast(100);
list.AddLast(200);
list.AddLast(300);
int[] strArr = new int[10];
list.CopyTo(strArr, 4);
foreach(int str in strArr){
Console.WriteLine(str);
}
}
}
出力結果
実行すると、最初の4つの要素は0のまま変化せず、インデックス4以降にLinkedListの要素が順番に格納されていることがわかります。
0 0 0 0 100 200 300 0 0 0
使用時の注意点
- コピー先の配列は、開始インデックスからLinkedListの要素数分の空き容量が必要です。容量が不足している場合はArgumentExceptionがスローされます。
- array引数にnullを渡すとArgumentNullExceptionが発生します。
- indexに負の値を指定した場合や、配列の範囲外になる場合は例外がスローされます。
このようにCopyTo()メソッドを使えば、LinkedListの内容を簡単に配列へ複製できます。開始インデックスを工夫することで、配列の任意の位置へのコピーも可能です。
-
C#でディレクトリの内容を丸ごとコピーする方法(サブフォルダ・ファイルも含む)
ディレクトリの内容全体をコピーする場合、最も重要なのはサブディレクトリ(サブフォルダ)やその中に関連するファイルも含めて確実にコピーすることです。C#ではDirectoryInfoクラスと再帰処理を組み合わせることで、これをシンプルに実現できます。 例:コピー元とコピー先の準備 まず、以下のようにサブディレクトリとファイルを含むデモ用のソースディレクトリ(コピー元)を想定します。 一方、コピー先(ターゲット)となるディレクトリは、初期状態では空であるとします。 サンプルコード 以下のコードでは、CopyAllメソッドを定義し、ファイルのコピーとサブディレクトリの再帰的なコピ
-
JavaでLinkedListを配列に変換する方法|toArray()メソッドの使い方を徹底解説
JavaのLinkedListクラスが提供するtoArray()メソッドを使うと、現在のLinkedListオブジェクトをObject型の配列に変換して取得できます。この配列には、リスト内のすべての要素が先頭から末尾まで正しい順序で格納されます。toArray()メソッドは、配列ベースのAPIとコレクションベースのAPIをつなぐ「橋渡し」の役割を果たす重要なメソッドです。 LinkedListを配列に変換する手順 LinkedListを配列に変換するには、以下の手順に従います。 LinkedListクラスをインスタンス化します。 add()メソッドを使ってリストに要素を追加します。 作成した