Tworzenie zbioru
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 18 z 65.
Skoro już wiesz, czym jest Set, nauczmy się, jak go utworzyć. W Dart tworzysz Set za pomocą nawiasów klamrowych {}, oddzielając elementy przecinkami, podobnie jak zapisuje się zbiór matematyczny.
Set<String> colors = {'red', 'blue', 'green'};
print(colors); // {red, blue, green}Ważne, aby nie mylić tej składni z tworzeniem obiektu Map. Chociaż oba używają nawiasów klamrowych, obiekt Set zawiera tylko wartości, podczas gdy obiekt Map zawiera pary klucz-wartość oddzielone dwukropkami. Pusty obiekt Set musi być jawnie zadeklarowany z określonym typem, aby odróżnić go od pustego obiektu Map.
Set<String> emptySet = <String>{}; // Pusty zbiór
Map<String, int> emptyMap = {}; // Pusta mapaMożesz także utworzyć Set z powtarzającymi się wartościami, ale pamiętaj, że duplikaty zostaną automatycznie usunięte, a w końcowej kolekcji pozostaną tylko unikalne elementy.
Wyzwanie
ŁatwyUtwórz program, który zarządza systemem tagowania bloga, tworząc zbiór unikalnych tagów dla wpisu na blogu. Twój program powinien:
- Odczytać ciąg znaków reprezentujący tytuł wpisu na blogu
- Odczytać wiele ciągów znaków reprezentujących tagi, które mają zostać dodane do wpisu (wprowadzanie zakończy się po otrzymaniu
"done") - Utworzyć zbiór ciągów znaków do przechowywania unikalnych tagów
- Dodać każdy tag do zbioru (duplikaty zostaną automatycznie usunięte)
- Wyświetlić wyniki tagowania bloga w dokładnie takim formacie, jak pokazano poniżej
Na przykład, jeśli tytuł bloga to "Introduction to Dart Programming", a tagi to "programming", "dart", "tutorial", "programming", "beginner", Twój program powinien wyświetlić:
Blog Post: Introduction to Dart Programming
Tags added: [programming, dart, tutorial, programming, beginner]
Unique tags: {programming, dart, tutorial, beginner}
Total unique tags: 4
Status: Blog post tagged successfullyJeśli tytuł bloga to "Web Development Tips", a tagi to "web", "html", "css", "web", "html", "javascript", Twój program powinien wyświetlić:
Blog Post: Web Development Tips
Tags added: [web, html, css, web, html, javascript]
Unique tags: {web, html, css, javascript}
Total unique tags: 4
Status: Blog post tagged successfullyJeśli tytuł bloga to "Getting Started", a tagi to "guide", "basics", Twój program powinien wyświetlić:
Blog Post: Getting Started
Tags added: [guide, basics]
Unique tags: {guide, basics}
Total unique tags: 2
Status: Blog post tagged successfullyTwój program musi utworzyć zbiór przy użyciu składni z nawiasami klamrowymi {} i pokazać, jak zbiory automatycznie usuwają duplikaty. Najpierw przechowaj wszystkie wprowadzone tagi na liście, aby pokazać, co zostało wpisane, a następnie utwórz zbiór, aby pokazać unikalne tagi. Zbiór powinien wyświetlać swoją zawartość w standardowym formacie zbioru, z nawiasami klamrowymi.
Spróbuj swoich sił
import 'dart:io';
void main() {
// Odczytaj tytuł wpisu na blogu
String? title = stdin.readLineSync();
// Odczytuj tagi, aż zostanie wpisane "done"
List<String> allTags = [];
String? tag;
while ((tag = stdin.readLineSync()) != "done") {
if (tag != null) {
allTags.add(tag);
}
}
// TODO: Napisz tutaj swój kod
// Utwórz Set z listy tagów, aby uzyskać unikalne tagi
// Oblicz łączną liczbę unikalnych tagów
// Wyświetl wyniki
print("Blog Post: $title");
print("Tags added: $allTags");
// Wyświetl unikalne tagi w formacie Set
// Wyświetl liczbę unikalnych tagów
// Wyświetl komunikat o stanie
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowana manipulacja listami
Właściwości listy: first i lastStan listy: isEmpty i isNotEmpOdwracanie listyDodawanie do listy: insertUsuwanie z listy: removeWhereWyszukiwanie na liście: indexOfSortowanie listyMieszanie elementów listyPodsumowanie – Organizator listy4Zaawansowane operacje na mapach
Iterowanie po mapieSprawdzanie kluczy i wartościWłaściwości mapy: klucze i wartościDodawanie warunkowe: putIfAbsentUsuwanie wpisów z mapyZagnieżdżone mapyPodsumowanie – aktualizacja stanu magazynowego2Operacje funkcyjne na listach
Przekształcanie za pomocą 'map'Filtrowanie za pomocą 'where'Używanie '.toList()'Sprawdzanie warunków za pomocą 'any'Warunki z użyciem 'every'Wyszukiwanie za pomocą 'firstWhere'Podsumowanie — filtrowanie danych5Projekt: Kalkulator koszyka zakupowego
Konfiguracja projektuDodawanie produktów do koszyka3Zbiory
Czym jest zbiór?Tworzenie zbioruDodawanie i usuwanie elementów ze zbiorówSprawdzanie, czy element znajduje się w zbiorzeKonwersja listy na zbiórSuma zbiorówCzęść wspólna zbiorówRóżnica zbiorówPodsumowanie — unikalna lista gościPoćwicz samodzielnie: Kompilator Dart online