Thuộc tính danh sách: đầu và cuối
Thuộc phần Logic và luồng điều khiển trong hành trình Dart của Coddy. Bài học 1 trên 65.
Khi làm việc với danh sách (list), bạn thường cần truy cập phần tử đầu tiên hoặc cuối cùng. Thay vì dùng chỉ số như [0] hoặc [list.length - 1], Dart cung cấp hai thuộc tính tiện lợi giúp việc này đơn giản hơn nhiều.
Thuộc tính .first cho bạn phần tử đầu tiên trong danh sách, còn thuộc tính .last cho bạn phần tử cuối cùng. Các thuộc tính này dễ đọc hơn và ít gây lỗi hơn so với việc tính toán vị trí chỉ số.
List<String> planets = ['Mercury', 'Venus', 'Earth', 'Mars'];
String firstPlanet = planets.first; // 'Mercury'
String lastPlanet = planets.last; // 'Mars'Các thuộc tính này hoạt động với mọi danh sách không rỗng và tự động tính chỉ số cho bạn. Nhờ vậy, code của bạn gọn gàng và dễ hiểu hơn khi cần làm việc với các phần tử ở đầu hoặc cuối danh sách.
Thử thách
DễTạo một chương trình phân tích danh sách phát nhạc bằng cách truy cập bài hát đầu tiên và cuối cùng. Chương trình của bạn cần:
- Đọc một chuỗi (string) đầu vào đại diện cho tên danh sách phát
- Đọc nhiều chuỗi đầu vào đại diện cho tên bài hát (đầu vào sẽ kết thúc khi bạn nhận được một chuỗi rỗng)
- Dùng thuộc tính (property)
.firstđể lấy bài hát đầu tiên trong danh sách phát - Dùng thuộc tính
.lastđể lấy bài hát cuối cùng trong danh sách phát - In ra phần phân tích danh sách phát theo đúng định dạng bên dưới
Ví dụ: nếu tên danh sách phát là "My Favorites" và các bài hát là "Bohemian Rhapsody", "Imagine", "Hotel California", chương trình của bạn sẽ in ra:
Playlist: My Favorites
Total songs: 3
Opening track: Bohemian Rhapsody
Closing track: Hotel CaliforniaChương trình của bạn cần xử lý danh sách phát có số lượng bài hát bất kỳ và dùng thuộc tính .first và .last để truy cập bài hát mở đầu và kết thúc.
Tự làm thử
import 'dart:io';
void main() {
// Đọc tên danh sách phát
String? playlistName = stdin.readLineSync();
// Đọc các bài hát cho đến khi gặp chuỗi rỗng
List<String> songs = [];
String? song;
while ((song = stdin.readLineSync()) != null && song!.isNotEmpty) {
songs.add(song);
}
// TODO: Viết code của bạn bên dưới
// Dùng songs.first và songs.last để lấy bài hát mở đầu và kết thúc
// In ra kết quả phân tích danh sách phát
print("Playlist: $playlistName");
print("Total songs: ${songs.length}");
// In bài hát mở đầu và kết thúc tại đây
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng điều khiển
1Thao tác nâng cao với danh sách
Thuộc tính danh sách: đầu và cuốiTrạng thái danh sách: isEmpty và isNotEmpĐảo ngược danh sáchThêm vào danh sách: insertXóa khỏi danh sách: removeWhereTìm trong danh sách: indexOfSắp xếp danh sáchXáo trộn danh sáchÔn tập: trình sắp xếp danh sách4Thao tác nâng cao với Map
Duyệt qua MapKiểm tra khóa và giá trịCác thuộc tính của Map: khóa và giá trịThêm có điều kiện: putIfAbsentXóa mục khỏi MapMap lồng nhauÔn tập: Cập nhật kho hàng2Thao tác hàm trên danh sách
Biến đổi bằng 'map'Lọc bằng 'where'Dùng '.toList()'Kiểm tra điều kiện bằng 'any'Điều kiện với 'every'Tìm phần tử bằng 'firstWhere'Ôn tập: lọc dữ liệu5Dự án: Tính tiền giỏ hàng
Thiết lập dự ánThêm mặt hàng vào giỏ8Dự án: Trình phân tích văn bản đơn giản
Tổng quan và thiết lập dự ánĐếm ký tự3Tập hợp
Tập hợp là gì?Tạo tập hợpThêm và xóa phần tử khỏi tập hợpKiểm tra phần tử trong tập hợpChuyển danh sách thành tập hợpPhép hợp của các tập hợpPhép giao của các tập hợpPhép hiệu của các tập hợpÔn tập: danh sách khách mời không trùng lặpTự luyện tập: Trình biên dịch Dart online