Menu
Coddy logo textTech

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);  // 3

Bir 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:

KoleksiyonSıralıYinelenenlerErişim Şekli
ListeEvetİzin verilirDizin
KümeHayırİzin verilmezİçeriyor mu kontrolü
EşlemHayır*Benzersiz anahtarlarAnahtar

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.

challenge icon

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 bir Classroom sınıfı oluştur:
    • Öğrencileri geliş sırasına göre takip etmek için List<String> adlı bir attendanceOrder (bir öğrenci birden fazla kez giriş yaparsa tekrarlar kabul edilir)
    • Hangi öğrencilerin mevcut olduğunu takip etmek için Set<String> adlı bir uniqueStudents (tekrar yoktur)
    • Her öğrencinin sınav puanını depolamak için Map<String, int> adlı bir scores
    Classroom sınıfında şu metotlar bulunmalıdır:
    • recordArrival(String name) - adı hem yoklama listesine hem de benzersiz öğrenciler kümesine ekler
    • setScore(String name, int score) - öğrencinin puanını map içinde depolar
    • printReport() - sınıf raporunu yazdırır (biçim aşağıda gösterilmiştir)
  • 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

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
}
quiz iconKendini test et

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

Kendi başına pratik yap: Online Dart derleyicisi