C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のArrayListで指定範囲にコレクションの要素をコピーする方法(SetRangeメソッド)

C#でコレクションの要素をArrayListの指定した範囲にコピーするには、SetRangeメソッドを使用します。この記事では、SetRangeメソッドの基本的な使い方を、サンプルコードと実行結果とともにわかりやすく解説します。

SetRangeメソッドとは

SetRangeメソッドは、ArrayListクラスに用意されているメソッドで、指定したインデックスの位置から、別のコレクション(ICollection)の要素を一括してコピーし、既存の要素を上書きします。構文は以下の通りです。

public virtual void SetRange(int index, ICollection c);
  • index … コピー先の開始位置を示すインデックス(0から始まります)
  • c … コピー元となる、ICollectionインターフェースを実装したコレクション

なお、上書きされるのはコピー元の要素数分だけなので、ArrayList全体の要素数(Count)は変わりません。

例1:先頭の要素を置き換える

まず、ArrayListの先頭(インデックス0)から文字列配列の要素をコピーする例を見てみましょう。

using System;
using System.Collections;

public class Demo {
   public static void Main() {
      ArrayList arrList = new ArrayList();
      arrList.Add("A");
      arrList.Add("B");
      arrList.Add("C");
      arrList.Add("D");

      Console.WriteLine("ArrayListの要素...");
      for (int i = 0; i < arrList.Count; i++) {
         Console.WriteLine(arrList[i]);
      }

      string[] str = { "Demo", "Text" };
      arrList.SetRange(0, str);

      Console.WriteLine("コピー後...");
      for (int i = 0; i < arrList.Count; i++) {
         Console.WriteLine(arrList[i]);
      }
  }
}

実行結果

このプログラムを実行すると、次のような出力が得られます。

ArrayListの要素...
A
B
C
D
コピー後...
Demo
Text
C
D

SetRange(0, str)によって、インデックス0と1の要素「A」「B」が「Demo」「Text」で上書きされました。一方、「C」「D」は元のまま保持されています。

例2:中間の位置から要素を置き換える

続いて、ArrayListの中間位置(インデックス2)からコピーする例を見てみましょう。

using System;
using System.Collections;

public class Demo {
   public static void Main() {
      ArrayList arrList = new ArrayList();
      arrList.Add("One");
      arrList.Add("Two");
      arrList.Add("Three");
      arrList.Add("Four");
      arrList.Add("Five");
      arrList.Add("Six");
      arrList.Add("Seven");
      arrList.Add("Eight");

      Console.WriteLine("ArrayListの要素...");
      for (int i = 0; i < arrList.Count; i++) {
         Console.WriteLine(arrList[i]);
      }

      string[] str = { "Demo", "Text" };
      arrList.SetRange(2, str);

      Console.WriteLine("コピー後...");
      for (int i = 0; i < arrList.Count; i++) {
         Console.WriteLine(arrList[i]);
      }
  }
}

実行結果

ArrayListの要素...
One
Two
Three
Four
Five
Six
Seven
Eight
コピー後...
One
Two
Demo
Text
Five
Six
Seven
Eight

この例では、SetRange(2, str)によって、インデックス2と3の「Three」「Four」が「Demo」「Text」に置き換えられました。このように、SetRangeメソッドを使えば、ArrayList内の任意の位置にある連続した要素を、別のコレクションの内容で簡単に差し替えることができます。

まとめ

  • SetRangeメソッドは、指定したインデックス以降にコレクションの要素をコピー(上書き)する
  • ArrayListの要素数は変化せず、コピー元の要素数分だけ上書きされる
  • コピー対象外の要素はそのまま維持される
  1. 【Java入門】Collections.shuffle()でコレクションの要素をシャッフルする方法

    この記事では、Javaでコレクション(List)の要素をシャッフル(ランダムに並び替え)する方法について詳しく解説します。 Collectionフレームワークは、複数のオブジェクトを格納・操作するための統一的なアーキテクチャを提供する仕組みです。Java Collections Frameworkを利用すれば、検索、ソート、挿入、操作、削除といった、データに対するほぼすべての操作を実現できます。 要素のシャッフルには、java.util.Collectionsクラスが提供するshuffle()メソッドを使用します。第2引数にRandomインスタンスを渡すことで、乱数生成の挙動を制御することも可

  2. JavaでArrayListのすべての要素を削除する方法(clearメソッドの使い方)

    JavaのArrayListからすべての要素を一括で削除したい場合は、clear()メソッドを使用します。この記事では、実際のコード例を通じて、ArrayListの全要素を削除する手順をわかりやすく解説します。1. 要素を持つArrayListを作成するまず、複数の要素を格納したArrayListを用意しましょう。以下の例では、Integer型のArrayListに7つの数値を追加しています。ArrayList<Integer> arrlist = new ArrayList<Integer>(5); arrlist.add(25); arrlist.add(50);