Listede Bulma: indexOf
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 6 / 65.
Bir listede belirli bir öğenin nerede bulunduğunu bulmanız gerektiğinde, Dart indexOf() metodunu sunar. Bu metod listeyi tarar ve aradığınız öğenin ilk geçtiği yerin indeks konumunu döndürür.
indexOf() metodu, bulmak istediğiniz öğeyi parametre olarak alır ve bir tam sayı döndürür. Eğer öğe listede mevcutsa, (0'dan başlayan) dizin konumunu döndürür. Eğer öğe bulunamazsa, -1 döndürür.
List<String> fruits = ['apple', 'banana', 'orange', 'banana'];
int appleIndex = fruits.indexOf('apple'); // 0
int bananaIndex = fruits.indexOf('banana'); // 1 (ilk oluşum)
int grapeIndex = fruits.indexOf('grape'); // -1 (bulunamadı)Bu yöntem, belirli konumlarda ekleme veya kaldırma gibi işlemleri gerçekleştirmeden önce bir öğenin konumunu bilmeniz gerektiğinde özellikle yararlıdır. indexOf() yönteminin yalnızca ilk eşleşmeyi bulduğunu unutmayın; bu nedenle bir öğe birden fazla kez görünüyorsa, ilk geçtiği yerin dizinini alırsınız.
Görev
KolayRaflardaki belirli kitapların yerini bularak bir kütüphane kitap arama sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:
- Kütüphane bölüm adını temsil eden bir dize (string) girdisi okuyun
- Raftaki kitap başlıklarını temsil eden birden fazla dize girdisi okuyun (girdi boş bir dize aldığınızda sona erecektir)
- Aranacak kitap başlığını temsil eden bir dize girdisi okuyun
- İstenen kitabın konumunu bulmak için
indexOf()metodunu kullanın - Arama sonuçlarını tam olarak aşağıda gösterilen formatta yazdırın
Örneğin, kütüphane bölümü "Science Fiction", kitaplar "Dune", "Foundation", "Neuromancer", "Foundation", "Ender's Game" ve aranan kitap "Foundation" ise programınız şu çıktıyı vermelidir:
Library Section: Science Fiction
Books on shelf: [Dune, Foundation, Neuromancer, Foundation, Ender's Game]
Searching for: Foundation
Book found at position: 1
Status: Book located successfullyEğer kütüphane bölümü "Mystery", kitaplar "Sherlock Holmes", "Agatha Christie", "The Maltese Falcon" ve aranan kitap "Gone Girl" ise programınız şu çıktıyı vermelidir:
Library Section: Mystery
Books on shelf: [Sherlock Holmes, Agatha Christie, The Maltese Falcon]
Searching for: Gone Girl
Book found at position: -1
Status: Book not availableProgramınız kitabı aramak için indexOf() metodunu kullanmalıdır. Kitap bulunduğunda (position >= 0), "Book located successfully" mesajını görüntüleyin. Kitap bulunamadığında (position = -1), "Book not available" mesajını görüntüleyin. indexOf() metodunun, kitap birden fazla kez mevcutsa ilk eşleşmenin konumunu döndürdüğünü unutmayın.
Kopya kağıdı
Bir listedeki bir öğenin konumunu bulmak için indexOf() kullanın:
List<String> fruits = ['apple', 'banana', 'orange', 'banana'];
int appleIndex = fruits.indexOf('apple'); // 0
int bananaIndex = fruits.indexOf('banana'); // 1 (ilk oluşum)
int grapeIndex = fruits.indexOf('grape'); // -1 (bulunamadı)Yöntem, bulunursa dizin konumunu (0'dan başlayarak) döndürür veya öğe mevcut değilse -1 döndürür. Yalnızca yinelenen öğelerin ilk oluşumunu bulur.
Kendin dene
import 'dart:io';
void main() {
// Kütüphane bölüm adını oku
String? section = stdin.readLineSync();
// Boş dize gelene kadar kitap başlıklarını oku
List<String> books = [];
String? book;
while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
books.add(book);
}
// Aranacak kitabı oku
String? searchBook = stdin.readLineSync();
// TODO: Kodunuzu aşağıya yazın
// Kitabın konumunu bulmak için indexOf() metodunu kullanın
// Sonuçları istenen formatta yazdırın
print('Library Section: $section');
print('Books on shelf: $books');
print('Searching for: $searchBook');
// Arama sonuçlarınıza göre konumu ve durumu yazdırın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli Listesi