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.

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);  // 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 hızlı bir karşılaştırma:

KoleksiyonSıralıYinelenenlerErişim
ListEvetİzin verilirİndeks
SetHayırİzin verilmezİçerik kontrolü
MapHayır*Benzersiz anahtarlarAnahtar

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.

challenge icon

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 bir Classroom sınıfı oluşturun:
    • Öğrencileri varış sırasına göre takip etmek için attendanceOrder adında bir List<String> (bir öğrenci birden fazla kez giriş yaparsa kopyalara izin verilir)
    • Hangi öğrencilerin mevcut olduğunu takip etmek için uniqueStudents adında bir Set<String> (kopya içermez)
    • Her öğrencinin test puanını saklamak için scores adında bir Map<String, int>
    Classroom sınıfınız şu metotlara sahip olmalıdır:
    • recordArrival(String name) - ismi hem yoklama listesine hem de benzersiz öğrenciler kümesine ekler
    • setScore(String name, int score) - öğrencinin puanını eşlemede (map) saklar
    • printReport() - sınıf raporunu yazdırır (aşağıda gösterilen formatta)
  • 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

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

Set - 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
KoleksiyonSıralıYinelenen ÖğelerErişim Yöntemi
ListEvetİzin verilirDizin (Index)
SetHayırİzin verilmezVarlık kontrolü
MapHayır*Benzersiz anahtarlarAnahtar (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
}
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