Đảo ngược danh sách
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 3 trên 65.
Đôi khi, bạn cần xem các phần tử trong danh sách theo thứ tự ngược lại. Dart cung cấp thuộc tính .reversed, tạo chế độ xem đảo ngược danh sách mà không thay đổi danh sách ban đầu.
Thuộc tính .reversed trả về một đối tượng có thể lặp qua, hiển thị các phần tử trong danh sách theo thứ tự ngược lại. Điều này có nghĩa là phần tử cuối cùng xuất hiện đầu tiên, phần tử áp chót xuất hiện thứ hai, và cứ tiếp tục như vậy.
List<int> numbers = [1, 2, 3, 4, 5];
var reversedNumbers = numbers.reversed;
print(reversedNumbers); // (5, 4, 3, 2, 1)
// Danh sách ban đầu vẫn không thay đổi
print(numbers); // [1, 2, 3, 4, 5]Một chi tiết quan trọng là .reversed trả về một đối tượng có thể lặp qua, chứ không phải một danh sách. Nếu cần làm việc với nó như một danh sách, bạn có thể chuyển đổi nó bằng .toList(). Thuộc tính này đặc biệt hữu ích khi bạn cần xử lý dữ liệu theo thứ tự ngược mà vẫn giữ nguyên danh sách ban đầu.
Thử thách
DễTạo một chương trình phân tích danh sách đọc bằng cách hiển thị sách theo thứ tự ban đầu và thứ tự đảo ngược. Chương trình cần:
- Đọc một chuỗi đầu vào đại diện cho tiêu đề danh sách đọc
- Đọc nhiều chuỗi đầu vào đại diện cho tiêu đề sách (đầ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
.reversedđể tạo chế độ xem đảo ngược của danh sách sách - In kết quả phân tích danh sách đọc theo chính xác định dạng bên dưới
Ví dụ, nếu tiêu đề danh sách đọc là "Summer Reading" và các sách là "1984", "To Kill a Mockingbird", "The Great Gatsby", chương trình của bạn sẽ in ra:
Reading List: Summer Reading
Books in original order: (1984, To Kill a Mockingbird, The Great Gatsby)
Books in reversed order: (To Kill a Mockingbird, The Great Gatsby, 1984)
Total books: 3Nếu tiêu đề danh sách đọc là "Quick Reads" và chỉ có một sách "Animal Farm", chương trình của bạn sẽ in ra:
Reading List: Quick Reads
Books in original order: (Animal Farm)
Books in reversed order: (Animal Farm)
Total books: 1Chương trình của bạn phải dùng thuộc tính .reversed để hiển thị sách theo thứ tự đảo ngược. Hãy nhớ rằng .reversed trả về một iterable, vì vậy khi in ra, kết quả sẽ hiển thị bằng dấu ngoặc đơn thay vì dấu ngoặc vuông.
Tự làm thử
import 'dart:io';
void main() {
// Đọc tiêu đề danh sách đọc
String? title = stdin.readLineSync();
// Đọc tên sách cho đến khi gặp chuỗi rỗng
List<String> books = [];
String? book;
while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
books.add(book);
}
// TODO: Viết code của bạn tại đây
// Dùng thuộc tính .reversed để tạo chế độ xem đảo ngược của danh sách books
// In đầu ra theo định dạng yêu cầu
}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