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

【C#入門】2つのArrayListオブジェクトが等しいかどうかを確認する方法

C#で2つのArrayListオブジェクトが等しいかどうかを確認するには、Equals()メソッドを使用します。ただし、ArrayListクラスはEqualsメソッドをオーバーライドしていないため、このメソッドは「参照の等価性」(2つの変数が同じインスタンスを指しているかどうか)を判定するという点に注意が必要です。具体的なコード例を見ていきましょう。

例1:同じインスタンスを参照している場合

まず、ArrayListを作成し、それを別の変数に代入したケースです。

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("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("ArrayList2の要素...");
        foreach (string res in list2) {
            Console.WriteLine(res);
        }

        ArrayList list3 = new ArrayList();
        list3 = list2;
        Console.WriteLine("ArrayList3はArrayList2と等しいか? = " + list3.Equals(list2));
    }
}

出力結果

ArrayList1の要素...
A
B
C
D
E
F
G
H
I
ArrayList2の要素...
A
B
C
D
E
F
G
H
I
ArrayList3はArrayList2と等しいか? = True

list3 = list2; によって、list3にはlist2への参照が代入されます。つまり、両者はまったく同じオブジェクトを指しているため、Equals()メソッドは True を返します。

例2:内容が同じでも別々のインスタンスの場合

次に、同じ要素を持つものの、独立した2つのインスタンスであるArrayList同士を比較してみます。

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("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("ArrayList2の要素...");
        foreach (string res in list2) {
            Console.WriteLine(res);
        }

        Console.WriteLine("ArrayList1はArrayList2と等しいか? = " + list1.Equals(list2));
    }
}

出力結果

ArrayList1の要素...
A
B
C
D
E
F
G
H
I
ArrayList2の要素...
A
B
C
D
E
F
G
H
I
ArrayList1はArrayList2と等しいか? = False

この例では、list1とlist2はどちらも「A」から「I」までの同じ要素を含んでいます。しかし、それぞれが独立した別個のインスタンスであるため、Equals()メソッドは False を返します。

まとめ:ArrayListの等価性チェックのポイント

  • Equals()メソッドは参照比較を行う:ArrayListはEqualsをオーバーライドしていないため、中身が同じでも別インスタンスならFalseになります。
  • 代入すると同一参照になるlist3 = list2; のように代入すれば、両者は同じオブジェクトを指すためTrueが返ります。
  • 要素の中身を比較したい場合:要素数と各要素をループで順に比較するか、LINQの SequenceEqual() メソッドを利用しましょう。
  • 新規開発ではList<T>を推奨:ArrayListは型安全性に欠けるため、現在ではジェネリックな List<T> の使用がベストプラクティスとされています。
  1. Python Pandas – 2つのIndexオブジェクトが等しいかどうかを判定する方法

    Pandasで2つのIndexオブジェクトが等しいかどうかを確認するには、equals()メソッドを使用します。このメソッドは、両方のインデックスの要素と順序が完全に一致している場合にTrueを返し、そうでなければFalseを返します。equals()メソッドの基本的な使い方まず、必要なライブラリをインポートします。import pandas as pd次に、比較対象となるindex1とindex2を作成します。index1 = pd.Index([15, 25, 55, 10, 100, 70, 35, 40, 55]) index2 = pd.Index([15, 25, 55, 10,

  2. Python Pandas入門:DataFrameオブジェクトが等しいかどうかを確認する方法

    PythonのPandasで2つのDataFrame(データフレーム)オブジェクトが等しいかどうかを確認するには、equals()メソッドを使用します。このメソッドは、2つのDataFrameが同じ形状・要素・値を持っている場合にTrueを返し、そうでなければFalseを返します。DataFrame1の作成まず、2つの列(Car、Reg_Price)を持つDataFrame1を作成しましょう。dataFrame1 = pd.DataFrame( { Car: [BMW, Lexus, Audi, Mustang, Bentley, Jaguar], Reg_Pri