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

C#で2つのLinkedListオブジェクトが等しいかどうかを確認する方法

C#で2つのLinkedListオブジェクトが等しいかどうかを確認するには、Equals()メソッドを使用します。この記事では、具体的なサンプルコードと実行結果をもとに、その動作をわかりやすく解説します。

例1:同じ参照を持つLinkedList同士の比較

まず、2つのLinkedListを用意し、一方の変数にもう一方を代入したケースを見てみましょう。list3 = list2; とすることで、list3とlist2は同じインスタンス(同一の参照)を共有することになります。

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main(String[] args) {
      LinkedList<string> list1 = new LinkedList<string>();
      list1.AddLast("One");
      list1.AddLast("Two");
      list1.AddLast("Three");
      list1.AddLast("Four");
      list1.AddLast("Five");
      Console.WriteLine("LinkedList1の要素...");
      foreach (string res in list1) {
         Console.WriteLine(res);
      }

      LinkedList<string> list2 = new LinkedList<string>();
      list2.AddLast("India");
      list2.AddLast("US");
      list2.AddLast("UK");
      list2.AddLast("Canada");
      list2.AddLast("Poland");
      list2.AddLast("Netherlands");
      Console.WriteLine("LinkedList2の要素...");
      foreach (string res in list2) {
         Console.WriteLine(res);
      }

      LinkedList<string> list3 = new LinkedList<string>();
      list3 = list2;
      Console.WriteLine("LinkedList3はLinkedList2と等しいか? = " + list3.Equals(list2));
   }
}

実行結果

LinkedList1の要素...
One
Two
Three
Four
Five

LinkedList2の要素...
India
US
UK
Canada
Poland
Netherlands
LinkedList3はLinkedList2と等しいか? = True

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

例2:独立したLinkedList同士の比較

続いて、別々に生成された2つのLinkedListを比較してみます。

using System;
using System.Collections.Generic;

public class Demo {
   public static void Main(String[] args) {
      LinkedList<string> list1 = new LinkedList<string>();
      list1.AddLast("One");
      list1.AddLast("Two");
      list1.AddLast("Three");
      list1.AddLast("Four");
      list1.AddLast("Five");
      Console.WriteLine("LinkedList1の要素...");
      foreach (string res in list1) {
         Console.WriteLine(res);
      }

      LinkedList<string> list2 = new LinkedList<string>();
      list2.AddLast("India");
      list2.AddLast("US");
      list2.AddLast("UK");
      list2.AddLast("Canada");
      list2.AddLast("Poland");
      list2.AddLast("Netherlands");
      Console.WriteLine("LinkedList2の要素...");
      foreach (string res in list2) {
         Console.WriteLine(res);
      }

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

実行結果

LinkedList1の要素...
One
Two
Three
Four
Five

LinkedList2の要素...
India
US
UK
Canada
Poland
Netherlands
LinkedList2はLinkedList1と等しいか? = False

この場合、list1list2はそれぞれ独立して生成されたインスタンスです。そのため、Equals()メソッドはFalseを返します。

ポイント解説:参照の等価性に注意

LinkedList<T>クラスはObject.Equals()メソッドをオーバーライドしていないため、Equals()による比較は参照の等価性に基づいて行われます。結果は次のようにまとめられます。

  • 同じインスタンスへの参照同士 → True
  • 別々に生成されたインスタンス同士(内容が同一でも)→ False

もし「要素の内容が一致しているかどうか」を比較したい場合は、LINQのSequenceEqual()メソッドを使うのが便利です。

using System.Linq;

// 要素の並び順と値がすべて一致していれば true を返す
bool isEqual = list1.SequenceEqual(list2);
  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