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.
List, öğelere dizin aracılığıyla erişilen sıralı bir koleksiyondur. Öğeler eklenme sıraları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 kısa bir karşılaştırma:
| Koleksiyon | Sıralı | Yinelenenler | Erişim Şekli |
|---|---|---|---|
| Liste | Evet | İzin verilir | Dizin |
| Küme | Hayır | İzin verilmez | İçeriyor mu kontrolü |
| Eşlem | Hayır* | Benzersiz anahtarlar | Anahtar |
Bu koleksiyonlar, özel sınıflarınızla çalışan tür açısından güvenli koleksiyonlar oluşturmak için sonraki derslerde keşfedeceğiniz jeneriklerle birleştirildiğinde daha da güçlü hâle gelir.
Görev
KolayÖğrenci verilerini farklı şekillerde düzenlemek için üç koleksiyon türünü de kullanan bir sınıf yönetim sistemi oluşturalım. Aynı bilgileri yönetirken List, Set ve Map türlerinin her birinin farklı amaçlara nasıl hizmet ettiğini göreceksin.
Kodunu iki dosyaya ayıracaksın:
classroom.dart: Üç koleksiyon türünü de kullanarak öğrenci verilerini yöneten birClassroomsınıfı oluştur:- Öğrencileri geliş sırasına göre takip etmek için
List<String>adlı birattendanceOrder(bir öğrenci birden fazla kez giriş yaparsa tekrarlar kabul edilir) - Hangi öğrencilerin mevcut olduğunu takip etmek için
Set<String>adlı biruniqueStudents(tekrar yoktur) - Her öğrencinin sınav puanını depolamak için
Map<String, int>adlı birscores
recordArrival(String name)- adı hem yoklama listesine hem de benzersiz öğrenciler kümesine eklersetScore(String name, int score)- öğrencinin puanını map içinde depolarprintReport()- sınıf raporunu yazdırır (biçim aşağıda gösterilmiştir)
- Öğrencileri geliş sırasına göre takip etmek için
main.dart: Sınıf dosyanı içe aktar ve sistemi göster:- Bir
Classroomörneği oluştur - Gelişleri şu sırayla kaydet:
'Alice','Bob','Alice','Carol','Bob' - Puanları ayarla: Alice =
95, Bob =87, Carol =92 printReport()metodunu çağır
- Bir
printReport() metodu şunu yazdırmalıdır:
Arrival Order: [Alice, Bob, Alice, Carol, Bob]
Unique Students: {Alice, Bob, Carol}
Scores: {Alice: 95, Bob: 87, Carol: 92}List'in her gelişi (tekrarlar dahil) koruduğuna, Set'in yalnızca benzersiz adları otomatik olarak tuttuğuna ve Map'in her öğrenciyi puanıyla ilişkilendirdiğine dikkat et. Her koleksiyon türü kendi amacına mükemmel şekilde hizmet eder!
Beklenen çıktı:
Arrival Order: [Alice, Bob, Alice, Carol, Bob]
Unique Students: {Alice, Bob, Carol}
Scores: {Alice: 95, Bob: 87, Carol: 92}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
1Nesne Tabanlı Programlamanın Temelleri
Harici DosyalarKütüphaneler ve İçe AktarmalarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar SözcüğüMetotlarÖrnek DeğişkenleriYapıcıların TemelleriTekrar - Basit Hesap Makinesi4Null Güvenliği
Null Güvenliğine GirişNullable ve Non-Nullable? ve ! OperatörleriLate Anahtar Sözcüğü ve Null GüvenliğiNull-Aware OperatörlerSınıflarda Null GüvenliğiTekrar - Kullanıcı Profili Sistemi7Soyut Sınıflar ve Arayüzler
Soyut SınıflarSoyut MetotlarDart'ta ArayüzlerÖrtük ArayüzlerUygulamak ve GenişletmekBirden Çok ArayüzTekrar - Şekil Hesaplayıcı10Koleksiyonlar ve Generics
List, Set, Map Genel BakışTür Güvenli KoleksiyonlarGeneric SınıflarGeneric MetotlarGeneric KısıtlamalarIterable ve IteratorTekrar - Generic Depolama2Dart'ta Yapıcılar
Varsayılan YapıcıAdlandırılmış YapıcılarBaşlatıcı ListeleriSabit YapıcılarFabrika YapıcılarıYönlendiren YapıcılarÖzet - Şekil Oluşturucu5Kapsülleme
Public ve Private Üyeler_ Ön Ek KuralıKütüphane Düzeyinde GizlilikGetter ve Setter DerinliğiBilgi GizlemeTekrar - Öğrenci Kayıtları8Mixin'ler
Mixin'lere GirişMixin OluşturmaBirden Çok Mixin KullanımıMixin'lerde on Anahtar SözcüğüMixin ve Kalıtım KarşılaştırmasıMixin ve Arayüz KarşılaştırmasıÖzet - Hayvan Sistemi11Özel Metotlar
toString() Geçersiz KılmahashCode & == Geçersiz KılmaComparable Arayüzücall() MetodunoSuchMethod Geçersiz KılmaÖzet - Özel Koleksiyon14Tasarım Desenleri Bölüm 1
Tasarım Desenlerine GirişSingleton DeseniFactory DeseniObserver DeseniStrategy Deseni3Sınıf Özellikleri
Örnek ve Static ÜyelerFinal ve Const AlanlarLate DeğişkenlerStatic Metotlar ve AlanlarGetter ve Setter'larÖzet - Banka Hesabı Yöneticisi6Kalıtım
Temel Kalıtımsuper Anahtar SözcüğüMetot Geçersiz Kılma@override Açıklamasıfinal Sınıf Anahtar SözcüğüKurucular ve KalıtımÖzet - Çalışan Hiyerarşisi9Çok Biçimlilik
Çok Biçimlilik TemelleriArayüzler Yoluyla Çok BiçimlilikÇalışma Zamanı Tür Denetimiis ve as OperatörleriCovariant Anahtar KelimesiTekrar - Ödeme İşlemcisi12Asenkron OOP
Future'ler ve async/awaitStream TemelleriStream DenetleyicileriAsenkron YapıcılarSınıf Metotlarında AsenkronlukÖzet - Veri Getirici15Tasarım Desenleri Bölüm 2
Komut DeseniAdaptör DeseniDekoratör DeseniŞablon Metot DeseniDurum DeseniBileşik DesenDepo DeseniKendi başına pratik yap: Online Dart derleyicisi