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
この場合、list1とlist2はそれぞれ独立して生成されたインスタンスです。そのため、Equals()メソッドはFalseを返します。
ポイント解説:参照の等価性に注意
LinkedList<T>クラスはObject.Equals()メソッドをオーバーライドしていないため、Equals()による比較は参照の等価性に基づいて行われます。結果は次のようにまとめられます。
- 同じインスタンスへの参照同士 → True
- 別々に生成されたインスタンス同士(内容が同一でも)→ False
もし「要素の内容が一致しているかどうか」を比較したい場合は、LINQのSequenceEqual()メソッドを使うのが便利です。
using System.Linq; // 要素の並び順と値がすべて一致していれば true を返す bool isEqual = list1.SequenceEqual(list2);
-
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,
-
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