Cắt danh sách bằng SubList
Thuộc phần Kiến thức nền tảng trong hành trình Kotlin của Coddy. Bài học 79 trên 93.
Đôi khi, bạn cần trích xuất một phần của danh sách thay vì làm việc với toàn bộ danh sách. Phương thức subList() cho phép bạn tạo chế độ xem một khoảng phần tử cụ thể từ danh sách hiện có.
Phương thức subList() nhận hai tham số: chỉ số bắt đầu (được tính) và chỉ số kết thúc (không được tính). Điều này có nghĩa là phần tử ở chỉ số bắt đầu được đưa vào, còn phần tử ở chỉ số kết thúc thì không:
val numbers = listOf(10, 20, 30, 40, 50)
val slice = numbers.subList(1, 4)
println(slice) // [20, 30, 40]Trong ví dụ này, subList(1, 4) trích xuất các phần tử từ chỉ số 1 đến trước chỉ số 4. Kết quả là phần tử thứ hai, thứ ba và thứ tư.
Danh sách con subList là một chế độ xem của danh sách ban đầu, không phải bản sao. Bạn cần hiểu điều này khi làm việc với danh sách có thể thay đổi, vì những thay đổi trong danh sách ban đầu có thể ảnh hưởng đến danh sách con.
Với hầu hết các trường hợp dùng danh sách chỉ đọc, bạn có thể dùng nó để truy cập một nhóm phần tử:
val days = listOf("Mon", "Tue", "Wed", "Thu", "Fri")
val midWeek = days.subList(1, 4)
println(midWeek) // [Tue, Wed, Thu]Thử thách
Trung bìnhBạn sẽ nhận một danh sách số nguyên và hai chỉ số xác định một phạm vi. Trích xuất một danh sách con bằng subList() và in ra tổng các phần tử đã trích xuất.
Định dạng đầu vào:
- Dòng đầu tiên: một số nguyên
nbiểu thị số phần tử ndòng tiếp theo: các số nguyên cần thêm vào danh sách- Dòng tiếp theo: chỉ số bắt đầu (bao gồm)
- Dòng cuối cùng: chỉ số kết thúc (không bao gồm)
Định dạng đầu ra:
In ra tổng các phần tử trong danh sách con đã trích xuất.
Ví dụ:
Nếu danh sách là [5, 10, 15, 20, 25], với chỉ số bắt đầu là 1 và chỉ số kết thúc là 4, danh sách con sẽ là [10, 15, 20] và đầu ra cần là 45.
Tự làm thử
fun main() {
val n = readLine()!!.toInt()
val list = mutableListOf<Int>()
repeat(n) {
list.add(readLine()!!.toInt())
}
val startIndex = readLine()!!.toInt()
val endIndex = readLine()!!.toInt()
// TODO: Viết code của bạn bên dưới
// Dùng subList() để lấy các phần tử từ startIndex đến endIndex
// Tính và in ra tổng của các phần tử đã lấ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 Kiến thức nền tảng
4Toán tử phần 1
Toán tử số họcToán tử moduloPhép gán kết hợpToán tử so sánhÔn tập: phép tính đơn giản7Nhập xuất cơ bản
Hàm PrintlnMẫu chuỗiĐầu vào ReadLineChuyển đổi kiểu dữ liệuÔn tập: Số năm đến khi nghỉ hưuÔn tập: Đúng hay sai10Hàm
Khai báo hàmTham số và đối sốGiá trị trả vềĐối số có tênGiá trị mặc địnhHàm chỉ gồm một biểu thứcÔn tập: hàm SigmaÔn tập: hàm kiểm tra hợp lệ5Toán tử, phần 2
Toán tử logic, phần 1Toán tử logic, phần 2Toán tử logic, phần 3Toán tử ba ngôi với biểu thức ifÔn tập: logic đơn giản14Danh sách nâng cao
Cắt danh sách bằng SubListCắt danh sách bằng take và dropToán tử trên dãyPhương thức ContainsÔn tập: tìm kiếm trên một trang3Tính có thể null
An toàn với null là gìKiểu có thể nullToán tử gọi an toànToán tử ElvisCơ bản về thử thách hàmKhẳng định không nullÔn tập: truy cập an toàn6Ra quyết định
Câu lệnh ifCâu lệnh if-elseIf dưới dạng biểu thứcBiểu thức whenWhen với khoảng giá trịÔn tập: máy tính đơn giản9Vòng lặp
Vòng lặp forVòng lặp whileVòng lặp do-whileBreakContinuePhạm vi trong vòng lặpVòng lặp lồng nhauÔn tập: giai thừaÔn tập: đầu vào động12Cơ bản về danh sách
List và MutableListTruy cập phần tửChỉnh sửa danh sáchPhương thức của ListPair và TripleÔn tập: danh sách sản phẩmÔn tập: danh sách đảo ngược15Theo dõi chi tiêu hằng ngày
Tổng quan dự ánThoát khỏi chương trìnhTự luyện tập: Playground Kotlin