Sobes.tech
Middle

İki kolleksiyanın məzmununu müqayisə etmək üçün nə etmək lazımdır?

sobes.tech Süni İntellekt

AI-dan cavab

Bir neçə yanaşma mövcuddur:

  1. Element-ə əsaslanan müqayisə və sıralama. Hər iki kolleksiyanı sıralayırıq və sonra elementləri indeksə görə müqayisə edirik.
  2. LINQ istifadə edərək müqayisə.
    • SequenceEqual: İki kolleksiyanın məzmununu element-ə əsasən, ardıcıllığı nəzərə alaraq müqayisə edir.
    • Intersect: Hər iki kolleksiyada ümumi olan elementləri tapır.
    • Except: Bir kolleksiyada olan, digərində olmayan elementləri tapır.
    • Union: Hər iki kolleksiyanın unikal elementlərini birləşdirir.
  3. HashSet istifadə. Bir kolleksiyanı HashSet-ə çeviririk və sürətli axtarış və müqayisə üçün istifadə edirik.

Yöntəmi seçərkən aşağıdakıları nəzərə almaq lazımdır:

  • Elementlərin ardıcıllığı: Müqayisədə elementlərin ardıcıllığı vacibdirmi?
  • Performans: Böyük kolleksiyalar üçün hash cədvəllər və ya sıralama istifadə edən metodlar daha səmərəli ola bilər.
  • Təkrarlananlar: Təkrarlanan elementləri necə idarə etmək?

LINQ SequenceEqual istifadə nümunəsi:

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

// ...

List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 1, 2, 3 };
List<int> list3 = new List<int> { 3, 2, 1 };

// Ardıcıllığı nəzərə alaraq məzmunu müqayisə edir
bool ardıcıllıqlaBərabərdir = list1.SequenceEqual(list2); // true
bool ardıcıllıqlaBərabərdir2 = list1.SequenceEqual(list3); // false

LINQ Intersect istifadə nümunəsi:

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

// ...

List<int> list1 = new List<int> { 1, 2, 3, 4 };
List<int> list2 = new List<int> { 3, 4, 5, 6 };

// Ümumi elementləri tapır
IEnumerable<int> ümumiElementlər = list1.Intersect(list2); // { 3, 4 }

HashSet istifadə nümunəsi:

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

// ...

List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 3, 1, 2 };

// Sürətli axtarış üçün kolleksiyondan `HashSet` yaradılır
HashSet<int> set1 = new HashSet<int>(list1);

// İkinci kolleksiyanın bütün elementlərinin ilk kolleksiyada olub-olmadığını yoxlayır
bool hamısıVar = list2.All(item => set1.Contains(item)); // true

// Həmçinin, hər iki kolleksiyada unikal elementlərin sayı eynidirmi?
if (hamısıVar && set1.Count == list2.Distinct().Count())
{
    // Kolleksiyalar ardıcıllıqdan asılı olmadan eyni elementlərə malikdir
}