C#でArrayListに実際に含まれている要素数を取得する方法
C#のArrayListに実際に含まれている要素の数を取得するには、Countプロパティを使用します。Countプロパティは、リストに現在格納されている要素の実際の個数を返します。
なお、ArrayListにはよく似た名前のCapacityプロパティも存在します。Capacityは内部で確保されている「格納可能な容量」を表すため、実際の要素数(Count)とは必ずしも一致しない点に注意してください。
サンプルコード
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args){
ArrayList list1 = new ArrayList();
list1.Add("A");
list1.Add("B");
list1.Add("C");
list1.Add("D");
list1.Add("E");
list1.Add("F");
list1.Add("G");
list1.Add("H");
list1.Add("I");
Console.WriteLine("Elements in ArrayList1...");
foreach (string res in list1){
Console.WriteLine(res);
}
ArrayList list2 = new ArrayList();
list2.Add("A");
list2.Add("B");
list2.Add("C");
list2.Add("D");
list2.Add("E");
list2.Add("F");
list2.Add("G");
list2.Add("H");
list2.Add("I");
Console.WriteLine("Elements in ArrayList2...");
foreach (string res in list2){
Console.WriteLine(res);
}
ArrayList list3 = new ArrayList();
Console.WriteLine("Current capacity of ArrayList3: " + list3.Capacity);
list3 = list2;
Console.WriteLine("Current capacity of ArrayList3 (Updated) " + list3.Capacity);
Console.WriteLine("Is ArrayList3 equal to ArrayList2? = "+list3.Equals(list2));
Console.WriteLine("Count of elements in ArrayList2 = " + list2.Count);
list2.Clear();
Console.WriteLine("Count of elements in ArrayList2 (Updated) = " + list2.Count);
}
}
出力結果
上記のコードを実行すると、次のような出力が得られます。
Elements in ArrayList1... A B C D E F G H I Elements in ArrayList2... A B C D E F G H I Current capacity of ArrayList3: 0 Current capacity of ArrayList3: 16 Is ArrayList3 equal to ArrayList2? = True Count of elements in ArrayList2 = 9 Count of elements in ArrayList2 (Updated) = 0
コードのポイント
- list3 = list2; では、新しいリストを作成しているのではなく、list2と同じオブジェクトへの参照をlist3に代入しています。そのため、list3のCapacityはlist2と同じ値(16)になります。
- Equalsメソッドの比較結果がTrueになるのは、両者が同一のインスタンスを参照しているためです。
- Clearメソッドを呼び出すとすべての要素が削除され、Countプロパティの値は0になります。ただし、確保済みの容量(Capacity)自体はすぐには縮小されない場合があります。
別のサンプルコード
続いて、要素追加後のCapacityプロパティの値を確認する例を見てみましょう。
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args){
ArrayList list1 = new ArrayList();
list1.Add("A");
list1.Add("B");
list1.Add("C");
list1.Add("D");
list1.Add("E");
list1.Add("F");
list1.Add("G");
list1.Add("H");
list1.Add("I");
Console.WriteLine("Current capacity of ArrayList1: " + list1.Capacity);
Console.WriteLine("Elements in ArrayList1...");
foreach (string res in list1){
Console.WriteLine(res);
}
ArrayList list2 = new ArrayList();
list2.Add("A");
list2.Add("B");
list2.Add("C");
list2.Add("D");
list2.Add("E");
list2.Add("F");
list2.Add("G");
list2.Add("H");
list2.Add("I");
Console.WriteLine("Elements in ArrayList2...");
foreach (string res in list2){
Console.WriteLine(res);
}
ArrayList list3 = new ArrayList();
list3 = list2;
Console.WriteLine("Is ArrayList3 equal to ArrayList2? = "+list3.Equals(list2));
}
}
出力結果
Current capacity of ArrayList1: 16 Elements in ArrayList1... A B C D E F G H I Elements in ArrayList2... A B C D E F G H I Is ArrayList3 equal to ArrayList2? = True
このように、要素を9つ追加した時点でもCapacityは16となっており、ArrayListは必要に応じて容量を自動的に拡張する仕組みを持っています。したがって、「リストにいくつの要素が入っているか」を知りたい場合は、Capacityではなく常にCountプロパティを参照するようにしましょう。
-
C#のArrayListからすべての要素を削除する方法
C#のArrayListからすべての要素を削除するには、Clear()メソッドを使用します。Clear()メソッドを呼び出すと、コレクション内の全要素が削除され、要素数(Count)は0になります。 例1:ArrayListの全要素を削除する using System; using System.Collections; public class Demo { public static void Main(String[] args){ ArrayList list1 = new ArrayList(); list1.Add(A);
-
C#でListの要素範囲を取得する方法:GetRange()メソッドの使い方
C#のListで特定の範囲の要素を取得するには、GetRange() メソッドを使用します。このメソッドは、指定したインデックス位置から指定した数の要素を取り出し、新しいリストとして返します。 GetRange() メソッドの基本構文 public List<T> GetRange(int index, int count); index:取得を開始する要素のインデックス(0から始まります) count:取得する要素の数 リストの作成と要素の追加 まず、リストを作成して要素を追加します。 List<int> arr1 = new List<int>();