List, Set, Map Genel Bakış
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 63 / 110.
Dart, uygulama geliştirirken sürekli kullanacağınız üç temel koleksiyon türü sunar. Her biri, verileri düzenlemek ve verilere erişmek için farklı bir amaca hizmet eder.
Bir Liste (List), öğelere dizin (index) ile erişilen sıralı bir koleksiyondur. Öğeler ekleme sırasını korur ve yinelenen öğelere izin verilir:
var fruits = ['apple', 'banana', 'apple'];
print(fruits[0]); // apple
print(fruits.length); // 3Bir Set, benzersiz öğelerden oluşan sırasız bir koleksiyondur. Yinelenen bir öğe eklemeye çalışırsanız, bu işlem basitçe yoksayılır:
var uniqueNumbers = {1, 2, 3, 2, 1};
print(uniqueNumbers); // {1, 2, 3}Bir Map, anahtar-değer çiftlerini saklayarak değerleri ilişkili anahtarlarıyla aramanıza olanak tanır:
var ages = {'Alice': 30, 'Bob': 25};
print(ages['Alice']); // 30İşte hızlı bir karşılaştırma:
| Koleksiyon | Sıralı | Yinelenenler | Erişim |
|---|---|---|---|
| List | Evet | İzin verilir | İndeks |
| Set | Hayır | İzin verilmez | İçerik kontrolü |
| Map | Hayır* | Benzersiz anahtarlar | Anahtar |
Bu koleksiyonlar, özel sınıflarınızla çalışan tip güvenli koleksiyonlar oluşturmak için gelecek derslerde keşfedeceğiniz generic'ler ile birleştirildiğinde daha da güçlü hale gelir.
Görev
KolayÖğrenci verilerini farklı şekillerde düzenlemek için her üç koleksiyon türünü de kullanan bir sınıf yönetim sistemi oluşturalım. Listelerin (Lists), Kümelerin (Sets) ve Eşlemelerin (Maps) aynı bilgileri yönetirken her birinin nasıl farklı amaçlara hizmet ettiğini göreceksiniz.
Kodunuzu iki dosya halinde düzenleyeceksiniz:
classroom.dart: Her üç koleksiyon türünü kullanarak öğrenci verilerini yöneten birClassroomsınıfı oluşturun:- Öğrencileri varış sırasına göre takip etmek için
attendanceOrderadında birList<String>(bir öğrenci birden fazla kez giriş yaparsa kopyalara izin verilir) - Hangi öğrencilerin mevcut olduğunu takip etmek için
uniqueStudentsadında birSet<String>(kopya içermez) - Her öğrencinin test puanını saklamak için
scoresadında birMap<String, int>
recordArrival(String name)- ismi hem yoklama listesine hem de benzersiz öğrenciler kümesine eklersetScore(String name, int score)- öğrencinin puanını eşlemede (map) saklarprintReport()- sınıf raporunu yazdırır (aşağıda gösterilen formatta)
- Öğrencileri varış sırasına göre takip etmek için
main.dart: Sınıf dosyanızı içe aktarın ve sistemi uygulamalı olarak gösterin:- Bir
Classroomörneği oluşturun - Varışları şu sırayla kaydedin:
'Alice','Bob','Alice','Carol','Bob' - Puanları ayarlayın: Alice =
95, Bob =87, Carol =92 printReport()metodunu çağırın
- Bir
printReport() metodu şu çıktıyı vermelidir:
Arrival Order: [Alice, Bob, Alice, Carol, Bob]
Unique Students: {Alice, Bob, Carol}
Scores: {Alice: 95, Bob: 87, Carol: 92}Listenin (List) her varışı (kopyalar dahil) nasıl koruduğuna, Kümenin (Set) otomatik olarak yalnızca benzersiz isimleri nasıl tuttuğuna ve Eşlemenin (Map) her öğrenciyi puanıyla nasıl ilişkilendirdiğine dikkat edin. Her koleksiyon türü amacına mükemmel bir şekilde hizmet eder!
Beklenen çıktı:
Arrival Order: [Alice, Bob, Alice, Carol, Bob]
Unique Students: {Alice, Bob, Carol}
Scores: {Alice: 95, Bob: 87, Carol: 92}Kopya kağıdı
Dart, verileri düzenlemek için üç temel koleksiyon türü sağlar:
List - Elemanlara dizin (index) ile erişilen sıralı bir koleksiyondur. Yinelenen öğelere izin verilir:
var fruits = ['apple', 'banana', 'apple'];
print(fruits[0]); // apple
print(fruits.length); // 3Set - Benzersiz elemanlardan oluşan sırasız bir koleksiyondur. Yinelenen öğeler otomatik olarak yoksayılır:
var uniqueNumbers = {1, 2, 3, 2, 1};
print(uniqueNumbers); // {1, 2, 3}Map - Anahtar ile arama yapmak için anahtar-değer (key-value) çiftlerini saklar:
var ages = {'Alice': 30, 'Bob': 25};
print(ages['Alice']); // 30| Koleksiyon | Sıralı | Yinelenen Öğeler | Erişim Yöntemi |
|---|---|---|---|
| List | Evet | İzin verilir | Dizin (Index) |
| Set | Hayır | İzin verilmez | Varlık kontrolü |
| Map | Hayır* | Benzersiz anahtarlar | Anahtar (Key) |
Kendin dene
import 'classroom.dart';
void main() {
// TODO: Bir Classroom örneği oluşturun
// TODO: Varışları şu sırayla kaydedin: 'Alice', 'Bob', 'Alice', 'Carol', 'Bob'
// TODO: Puanları ayarlayın: Alice = 95, Bob = 87, Carol = 92
// TODO: Sınıf verilerini görüntülemek için printReport() fonksiyonunu çağırın
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarKütüphaneler ve ImportlarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarÖrnek DeğişkenleriConstructor TemelleriÖzet - Basit Hesap Makinesi4Null Safety
Null Safety'ye GirişNullable ve Non-Nullable? ve ! OperatörleriLate Anahtar Kelimesi ve Null SafetyNull-Aware OperatörleriSınıflarda Null SafetyÖzet - Kullanıcı Profili Sistemi7Soyut Sınıflar ve Arayüzler
Soyut SınıflarSoyut MetotlarDart'ta ArayüzlerÖrtük ArayüzlerUygulama vs. GenişletmeÇoklu ArayüzlerÖzet - Şekil Hesaplayıcı10Koleksiyonlar ve Generic'ler
List, Set, Map Genel BakışTip Güvenli KoleksiyonlarGeneric SınıflarGeneric MetotlarGeneric KısıtlamalarIterable ve IteratorÖzet - Generic Depolama2Dart'ta Yapıcılar
Varsayılan Yapıcıİsimlendirilmiş Yapıcılarİlklendirme ListeleriSabit YapıcılarFabrika YapıcılarıYönlendiren YapıcılarÖzet - Şekil Oluşturucu5Kapsülleme
Public ve Private Üyeler_ Öneki KuralıKütüphane Düzeyinde GizlilikGetter ve Setter DetaylarıBilgi GizlemeÖzet - Öğrenci Kayıtları8Mixin'ler
Mixin'lere GirişMixin OluşturmaBirden Fazla Mixin KullanımıMixin'lerde on Anahtar KelimesiMixin vs KalıtımMixin vs ArayüzÖzet - Hayvan Sistemi11Özel Metotlar
toString() OverridehashCode ve == OverrideComparable Arayüzücall() MetodunoSuchMethod OverrideÖzet - Özel Koleksiyon14Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı17Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakter SistemiAraç Kiralama Servisi3Sınıf Özellikleri
Instance ve Statik ÜyelerFinal ve Const AlanlarLate DeğişkenlerStatik Metotlar ve AlanlarGetters ve SettersÖzet - Banka Hesabı Yöneticisi6Kalıtım
Temel Kalıtımsuper Anahtar KelimesiMetot Ezme@override Anotasyonufinal Sınıf Anahtar KelimesiYapıcı Metotlar ve KalıtımÖzet - Çalışan Hiyerarşisi9Çok Biçimlilik
Çok Biçimlilik TemelleriInterface'ler ile Çok BiçimlilikÇalışma Zamanı Tip Kontrolüis ve as OperatörleriCovariant Anahtar KelimesiÖzet - Ödeme İşlemcisi12Asenkron OOP
Futures ve async/awaitStream TemelleriStream Controller'larAsenkron KurucularSınıf Metotlarında Asenkron KullanımıÖzet - Data Fetcher15Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıRepository Kalıbı