Semak sama ada dua objek SortedDictionary adalah sama dalam C#

WBOY
Lepaskan: 2023-08-31 15:25:09
ke hadapan
826 orang telah melayarinya

在 C# 中检查两个 SortedDictionary 对象是否相等

SortedDictionary dalam C# ialah pelaksanaan berasaskan pokok binari yang mengekalkan elemennya dalam susunan utama. Ia ialah koleksi pasangan kunci/nilai yang diisih mengikut kunci. Artikel ini akan membimbing anda langkah demi langkah tentang cara menyemak sama ada dua objek SortedDictionary adalah sama dalam C#. Akhir sekali, anda akan menjadi mahir dalam menentukan sama ada dua objek SortedDictionary mengandungi elemen yang sama dan sama.

Fahami SortedDictionary dalam C#

Sebelum meneruskan, adalah penting untuk memahami apa itu SortedDictionary. Ia ialah koleksi berasaskan pokok binari dalam C# yang menyimpan pasangan nilai kunci dalam susunan kunci yang diisih. Ia adalah sebahagian daripada ruang nama System.Collections.Generic.

Ini adalah contoh SortedDictionary -

SortedDictionary<string, int> sortedDict = new SortedDictionary<string, int>() {
   {"One", 1},
   {"Two", 2},
   {"Three", 3}
};
Salin selepas log masuk

Gunakan SequenceEqual untuk membandingkan dua objek SortedDictionary

Salah satu cara paling mudah untuk menyemak sama ada dua objek SortedDictionary adalah sama ialah menggunakan kaedah SequenceEqual daripada ruang nama System.Linq. Memandangkan SortedDictionary secara automatik mengekalkan susunan elemen berdasarkan kunci, anda boleh menggunakan SequenceEqual secara langsung untuk perbandingan.

Contoh

Berikut ialah coretan kod yang menunjukkan perkara ini -

using System;
using System.Collections.Generic;
using System.Linq;

public class Program {
   public static void Main() {
      SortedDictionary<string, int> sortedDict1 = new SortedDictionary<string, int>() {
         {"One", 1},
         {"Two", 2},
         {"Three", 3}
      };

      SortedDictionary<string, int> sortedDict2 = new SortedDictionary<string, int>() {
         {"One", 1},
         {"Two", 2},
         {"Three", 3}
      };

      bool areEqual = sortedDict1.SequenceEqual(sortedDict2);
      
      Console.WriteLine("SortedDictionaries equal: " + areEqual);
   }
}
Salin selepas log masuk

Output

SortedDictionaries equal: True
Salin selepas log masuk
Salin selepas log masuk

Gunakan EqualityComparer tersuai

Jika anda ingin membandingkan berdasarkan nilai SortedDictionaries dan bukannya kekunci, atau jika anda ingin melaksanakan logik perbandingan yang kompleks, anda boleh menggunakan EqualityComparer tersuai.

Contoh

Begini cara anda boleh melakukannya −

using System;
using System.Collections.Generic;
using System.Linq;

class DictionaryComparer<TKey, TValue> : IEqualityComparer<SortedDictionary<TKey, TValue>> {
   public bool Equals(SortedDictionary<TKey, TValue> x, SortedDictionary<TKey, TValue> y) {
      // Check whether the dictionaries are equal
      return x.Count == y.Count && !x.Except(y).Any();
   }

   public int GetHashCode(SortedDictionary<TKey, TValue> obj) {
      int hash = 0;
      foreach (var pair in obj) {
         hash ^= pair.GetHashCode();
      }
      return hash;
   }
}

public class Program {
   public static void Main() {
      SortedDictionary<string, int> sortedDict1 = new SortedDictionary<string, int>() {
         {"One", 1},
         {"Two", 2},
         {"Three", 3}
      };

      SortedDictionary<string, int> sortedDict2 = new SortedDictionary<string, int>() {
         {"One", 1},
         {"Two", 2},
         {"Three", 3}
      };
      
      DictionaryComparer<string, int> comparer = new DictionaryComparer<string, int>();
      bool areEqual = comparer.Equals(sortedDict1, sortedDict2);

      Console.WriteLine("SortedDictionaries equal: " + areEqual);
   }
}
Salin selepas log masuk

Dalam contoh ini, kami mencipta pembanding kesaksamaan tersuai yang melaksanakan antara muka IEqualityComparer. Kaedah Equals menyemak sama ada dua SortedDictionary mempunyai bilangan elemen yang sama dan jika terdapat sebarang elemen dalam SortedDictionary pertama yang tiada dalam SortedDictionary kedua.

Output

SortedDictionaries equal: True
Salin selepas log masuk
Salin selepas log masuk

Kesimpulan

Dalam C#, anda boleh menyemak sama ada dua objek SortedDictionary adalah sama menggunakan kaedah SequenceEqual atau EqualityComparer tersuai. Walaupun kaedah SequenceEqual adalah pantas dan mudah, EqualityComparer tersuai menyediakan penyelesaian yang lebih fleksibel untuk keperluan perbandingan yang lebih kompleks. Pembanding tersuai ini boleh disesuaikan dengan keperluan khusus anda, termasuk perbandingan berdasarkan nilai atau mana-mana logik tersuai lain.

Atas ialah kandungan terperinci Semak sama ada dua objek SortedDictionary adalah sama dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!