Suchen in einer Liste: indexOf
Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 6 von 65.
Wenn Sie herausfinden müssen, wo sich ein bestimmtes Element in einer Liste befindet, bietet Dart die Methode indexOf() an. Diese Methode durchsucht die Liste und gibt die Indexposition des ersten Vorkommens des gesuchten Elements zurück.
Die Methode indexOf() nimmt das Element, das Sie finden möchten, als Parameter entgegen und gibt eine Ganzzahl zurück. Wenn das Element in der Liste vorhanden ist, gibt sie die Indexposition zurück (beginnend bei 0). Wenn das Element nicht gefunden wird, gibt sie -1 zurück.
List<String> fruits = ['apple', 'banana', 'orange', 'banana'];
int appleIndex = fruits.indexOf('apple'); // 0
int bananaIndex = fruits.indexOf('banana'); // 1 (erstes Vorkommen)
int grapeIndex = fruits.indexOf('grape'); // -1 (nicht gefunden)Diese Methode ist besonders nützlich, wenn Sie die Position eines Elements kennen müssen, bevor Sie Operationen wie das Einfügen oder Entfernen an bestimmten Stellen durchführen. Denken Sie daran, dass indexOf() nur die erste Übereinstimmung findet. Wenn ein Element also mehrmals vorkommt, erhalten Sie den Index seines ersten Auftretens.
Aufgabe
EinfachErstellen Sie ein Programm, das ein Bibliothekssuchsystem verwaltet, indem es den Standort bestimmter Bücher in den Regalen findet. Ihr Programm sollte:
- Einen String einlesen, der den Namen der Bibliotheksabteilung darstellt
- Mehrere Strings einlesen, die Buchtitel im Regal darstellen (die Eingabe endet, wenn Sie einen leeren String erhalten)
- Einen String einlesen, der den zu suchenden Buchtitel darstellt
- Die Methode
indexOf()verwenden, um die Position des gesuchten Buches zu finden - Die Suchergebnisse in dem unten gezeigten exakten Format ausgeben
Wenn zum Beispiel die Bibliotheksabteilung "Science Fiction" ist, die Bücher "Dune", "Foundation", "Neuromancer", "Foundation", "Ender's Game" sind und das gesuchte Buch "Foundation" ist, sollte Ihr Programm Folgendes ausgeben:
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 successfullyWenn die Bibliotheksabteilung "Mystery" ist, die Bücher "Sherlock Holmes", "Agatha Christie", "The Maltese Falcon" sind und das gesuchte Buch "Gone Girl" ist, sollte Ihr Programm Folgendes ausgeben:
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 availableIhr Programm muss die Methode indexOf() verwenden, um nach dem Buch zu suchen. Wenn das Buch gefunden wird (Position >= 0), geben Sie "Book located successfully" aus. Wenn das Buch nicht gefunden wird (Position = -1), geben Sie "Book not available" aus. Denken Sie daran, dass indexOf() die Position des ersten Vorkommens zurückgibt, falls das Buch mehrmals erscheint.
Spickzettel
Verwenden Sie indexOf(), um die Position eines Elements in einer Liste zu finden:
List<String> fruits = ['apple', 'banana', 'orange', 'banana'];
int appleIndex = fruits.indexOf('apple'); // 0
int bananaIndex = fruits.indexOf('banana'); // 1 (erstes Vorkommen)
int grapeIndex = fruits.indexOf('grape'); // -1 (nicht gefunden)Die Methode gibt die Indexposition (beginnend bei 0) zurück, falls das Element gefunden wird, oder -1, wenn das Element nicht existiert. Sie findet nur das erste Vorkommen von doppelten Elementen.
Probier es selbst
import 'dart:io';
void main() {
// Namen der Bibliotheksabteilung lesen
String? section = stdin.readLineSync();
// Buchtitel lesen, bis eine leere Zeichenfolge eingegeben wird
List<String> books = [];
String? book;
while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
books.add(book);
}
// Das zu suchende Buch lesen
String? searchBook = stdin.readLineSync();
// TODO: Schreiben Sie Ihren Code unten
// Verwenden Sie die Methode indexOf(), um die Position des Buches zu finden
// Die Ergebnisse im erforderlichen Format ausgeben
print('Library Section: $section');
print('Books on shelf: $books');
print('Searching for: $searchBook');
// Position und Status basierend auf Ihren Suchergebnissen ausgeben
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Listenmanipulation
Listen-Eigenschaften: first & lastListen-Status: isEmpty & isNotEmptyEine Liste umkehrenHinzufügen zu einer Liste: insertElemente aus Liste entfernen: removeWhereSuchen in einer Liste: indexOfEine Liste sortierenEine Liste mischenZusammenfassung – Listen-Organizer4Fortgeschrittene Map-Manipulation
Über eine Map iterierenPrüfen auf Schlüssel und WerteMap-Eigenschaften: keys & valuesBedingtes Hinzufügen: putIfAbsentEinträge aus einer Map entfernenVerschachtelte MapsRückblick – Inventar-Update7Fortgeschrittene Funktionen
Anonyme FunktionenFunktionen als Argumente übergebenClosures verstehenEinführung in die RekursionRekursive Funktion: CountdownRekursive Funktion: FakultätZusammenfassung – List Processor10Abschluss-Herausforderungen
Herausforderung: NotensortiererHerausforderung: VokalzählerHerausforderung: FizzBuzz2Funktionale Listenoperationen
Transformieren mit 'map'Filtern mit 'where''.toList()' verwendenBedingungen prüfen mit 'any'Bedingungen mit 'every'Suchen mit 'firstWhere'Zusammenfassung – Datenfilterung3Sets
Was ist ein Set?Ein Set erstellenHinzufügen und Entfernen in SetsPrüfen auf Elemente in einem SetEine Liste in ein Set umwandelnSet-VereinigungSet-SchnittmengeSet-DifferenzRückblick – Einzigartige Gästeliste