Sobes.tech
Junior

Dart-ში List და Set შორის რა განსხვავებაა?

sobes.tech AI

პასუხი AI-სგან

ძირითადი განსხვავებები:

  • შინაარსი: List შეიძლება შეიცავდეს დუბლიკატებს, Set ინახავს მხოლოდ უნიკალურ ელემენტებს.
  • სორტი: List ინარჩუნებს დამატების წესს, Set არ გარანტირებს სორტს.
  • შესრულება:
    • დამატება/წაშლა: საშუალოდ, Set-ში ელემენტის დამატება/წაშლა უფრო სწრაფია (O(1)), hashing-ის გამოყენების გამო. List-ში ეს ოპერაციები შეიძლება იყოს უფრო ნელი (მდე O(n)), პოზიციის მიხედვით.
    • ძიება: Set-ში, მნიშვნელობით ელემენტის ძიება უფრო სწრაფია (O(1) საშუალოდ), hashing-ის გამო. List-ში, მნიშვნელობით ძიება საჭიროებს სერიის გადავლას (O(n)). ინდექსით წვდომა List-ში სწრაფია (O(1)).

მაგალითები:

// List - საშუალებას აძლევს დუბლიკატებს, ინარჩუნებს წესს
List<int> numbersList = [1, 2, 2, 3, 1];
print(numbersList); // გამოტანა: [1, 2, 2, 3, 1]
print(numbersList[0]); // გამოტანა: 1 (ინდექსით წვდომა)

// Set - მხოლოდ უნიკალური ელემენტები, წესის გარანტია არა
Set<int> numbersSet = {1, 2, 2, 3, 1};
print(numbersSet); // გამოტანა: {1, 2, 3} (სორტი შეიძლება განსხვავდებოდეს)
// print(numbersSet[0]); // შეცდომა: Set არ მხარს უჭერს ინდექსით წვდომას
print(numbersSet.contains(2)); // გამოტანა: true (სწრაფი ძიება)