Menu
CoddyTech

Nhóm các giá trị

Thuộc phần Logic và luồng chương trình trong hành trình Kotlin của Coddy. Bài học 38 trên 63.

groupBy trả về một ánh xạ có các khóa được tạo bởi một lambda và các giá trị là danh sách những phần tử khớp. Mỗi nhóm giữ nguyên thứ tự ban đầu của các phần tử. Truy cập một nhóm không tồn tại sẽ cho kết quả null, giống như các thao tác tra cứu khác trong ánh xạ.

Bên trong main:

val groups = listOf("a", "to", "b").groupBy { it.length }
println(groups[1])

Nhóm có độ dài một chứa a và b theo thứ tự ban đầu.

groupBy lưu mọi phần tử (element) phù hợp vào một danh sách (list) theo khóa (key) đã tính.

challenge icon

Thử thách

Trung bình

Hoàn thiện wordsOfLength với các tham số words: List<String>, length: Int. Nhóm các từ theo độ dài, sau đó trả về nhóm được yêu cầu theo thứ tự ban đầu. Trả về danh sách rỗng nếu không có nhóm đó.

Trừ khi có giới hạn chặt hơn được nêu ở trên, mỗi cấp của bộ sưu tập chứa tối đa 100 phần tử, còn các đối số số nguyên và giá trị số nguyên trong bộ sưu tập nằm trong khoảng từ -1000 đến 1000. Văn bản được cung cấp để phân tích có thể chứa các biểu diễn không hợp lệ hoặc nằm ngoài phạm vi như mô tả.

Trả về giá trị thuộc kiểu List<String>. Giữ nguyên code đầu vào/đầu ra được cung cấp. Code này đọc từng đối số đơn trên một dòng; danh sách bắt đầu bằng số lượng phần tử, theo sau là các phần tử, còn map bắt đầu bằng số lượng mục, theo sau là từng khóa và giá trị. Danh sách lồng nhau lặp lại định dạng số lượng phần tử rồi đến các phần tử cho mỗi hàng. main được cung cấp sẽ in giá trị trả về, theo sau là một ký tự xuống dòng. Danh sách sử dụng định dạng trong ngoặc vuông tiêu chuẩn của Kotlin; không in thêm nhãn.

Tự làm thử

fun wordsOfLength(words: List<String>, length: Int): List<String> {
    // Viết lời giải của bạn ở đây.
    return emptyList()
}
fun main() {
    val wordsCount = readln().toInt()
    val words = mutableListOf<String>()
    for (i0 in 0 until wordsCount) {
        val wordsItem = readLine().orEmpty()
        words.add(wordsItem)
    }
    val length = readln().toInt()
    println(wordsOfLength(words, length))
}
quiz iconTự kiểm tra

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 chương trình

Tự luyện tập: Playground Kotlin