亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

kotlin的函數forEach示例詳解

 更新時間:2025年03月21日 10:29:44   作者:LCY133  
在 Kotlin 中,forEach 是一個高階函數,用于遍歷集合中的每個元素并對其執(zhí)行指定的操作,它的核心特點是 簡潔、函數式,適用于需要遍歷集合且無需返回值的場景,這篇文章主要介紹了kotlin的函數forEach示例詳解,需要的朋友可以參考下

在 Kotlin 中,forEach 是一個高階函數,用于遍歷集合中的每個元素并對其執(zhí)行指定的操作。它的核心特點是 簡潔、函數式,適用于需要遍歷集合且無需返回值的場景。以下是詳細說明和示例:

一、基本用法

1?? 遍歷集合

val list = listOf("Apple", "Banana", "Orange")
// 使用 lambda 表達式
list.forEach { fruit -> 
    println(fruit) 
}
// 簡化為 `it`
list.forEach { println(it) }

2?? 遍歷數組

val array = arrayOf(1, 2, 3)
array.forEach { println(it) }

3?? 遍歷 Map

val map = mapOf("A" to 1, "B" to 2)
// 遍歷鍵值對(Pair)
map.forEach { (key, value) ->
    println("$key -> $value")
}
// 或直接使用 `it.key` 和 `it.value`
map.forEach { println("${it.key}: ${it.value}") }

二、與 for 循環(huán)的區(qū)別

特性forEachfor 循環(huán)
語法函數式風格,通過 lambda 操作元素傳統(tǒng)循環(huán)結構
控制流無法使用 break/continue支持 break/continue
return 行為默認從外層函數返回(需用標簽控制)僅退出當前循環(huán)
適用場景簡單的遍歷操作需要復雜控制流或提前終止循環(huán)的場景

示例:return 的行為

fun testForEach() {
    listOf(1, 2, 3).forEach {
        if (it == 2) return  // 直接退出整個函數!
        println(it)
    }
    println("End") // 不會執(zhí)行
}
// 輸出:1

使用標簽控制 return

fun testForEachLabel() {
    listOf(1, 2, 3).forEach {
        if (it == 2) return@forEach  // 僅退出當前 lambda
        println(it)
    }
    println("End") // 會執(zhí)行
}
// 輸出:1, 3, End

三、高級用法

1?? 帶索引遍歷(結合 withIndex

list.withIndex().forEach { (index, value) ->
    println("$index: $value")
}

2?? 忽略參數(使用 _

list.forEachIndexed { index, _ ->
    println("Index $index") // 忽略元素值
}

3?? 鏈式調用(結合其他高階函數)

list.filter { it.length > 5 }
    .forEach { println(it) } // 先過濾再遍歷

四、注意事項

避免副作用
forEach 應僅用于遍歷,不要在其中修改外部變量(除非必要)。

// ? 不推薦:修改外部狀態(tài)
var count = 0
list.forEach { count++ }
// ? 推薦:使用 `count()` 函數
val count = list.size

不要修改集合本身
遍歷時修改集合(如增刪元素)可能導致 ConcurrentModificationException

性能考量
對大數據量或性能敏感場景,優(yōu)先使用 for 循環(huán)(性能略優(yōu))。

五、常見場景示例

1?? 遍歷并處理元素

val numbers = listOf(10, 20, 30)
numbers.forEach { 
    val squared = it * it
    println(squared)
}

2?? 遍歷文件內容

File("data.txt").readLines().forEach { line ->
    println(line.trim())
}

3?? 驗證數據

data class User(val name: String, val age: Int)
val users = listOf(User("Alice", 30), User("Bob", 17))
users.forEach { user ->
    require(user.age >= 18) { "${user.name} 未成年!" }
}

六、總結

核心作用:遍歷集合元素并執(zhí)行操作。
適用場景:簡單遍歷、無需返回值的操作。
替代方案:需要復雜控制流時用 for 循環(huán);需要返回新集合時用 map/filter

通過 forEach 可以讓代碼更簡潔,但需注意其局限性。

到此這篇關于kotlin的函數forEach的文章就介紹到這了,更多相關kotlin函數forEach內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • 詳解Android運行時權限及APP適配方法

    詳解Android運行時權限及APP適配方法

    本篇文章給大家詳細分析了Android運行時權限及APP適配方法,并把重要知識點做了說明,有需要的朋友參考下。
    2018-03-03
  • Android 訪問文件權限的四種模式介紹

    Android 訪問文件權限的四種模式介紹

    這篇文章主要介紹了Android 訪問文件權限的四種模式介紹的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • Android中自定義View實現圓環(huán)等待及相關的音量調節(jié)效果

    Android中自定義View實現圓環(huán)等待及相關的音量調節(jié)效果

    這篇文章主要介紹了Android中自定義View實現圓環(huán)等待及相關的音量調節(jié)效果,邏輯非常簡單,或許繪圖方面更加繁瑣XD 需要的朋友可以參考下
    2016-04-04
  • Android Service自啟動注意事項分析

    Android Service自啟動注意事項分析

    這篇文章主要介紹了Android Service自啟動注意事項,結合實例分析了Android Service自啟動過程中屬性設置的相關技巧,需要的朋友可以參考下
    2016-03-03
  • kotlin的函數forEach示例詳解

    kotlin的函數forEach示例詳解

    在 Kotlin 中,forEach 是一個高階函數,用于遍歷集合中的每個元素并對其執(zhí)行指定的操作,它的核心特點是 簡潔、函數式,適用于需要遍歷集合且無需返回值的場景,這篇文章主要介紹了kotlin的函數forEach示例詳解,需要的朋友可以參考下
    2025-03-03
  • 深入理解Android Matrix理論與使用的詳解

    深入理解Android Matrix理論與使用的詳解

    本篇文章是對Android Matrix理論與使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • Android仿微信錄制小視頻

    Android仿微信錄制小視頻

    這篇文章主要為大家詳細介紹了Android仿微信錄制小視頻,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android  Surfaceview的繪制與應用

    Android Surfaceview的繪制與應用

    這篇文章主要介紹了Android Surfaceview的繪制與應用的相關資料,需要的朋友可以參考下
    2017-07-07
  • Kotlin Job啟動流程源碼層深入分析

    Kotlin Job啟動流程源碼層深入分析

    如果要我拿現實中的一事物與Kotlin協(xié)程中的Job做一個類比,那么我會把Job比作成海洋中的冰山。自由漂浮的冰山約有90%體積沉在海水表面下,因此看著浮在水面上的形狀并猜不出水下的形狀
    2022-11-11
  • Android實現帶描邊的圓角圖片

    Android實現帶描邊的圓角圖片

    這篇文章主要為大家詳細介紹了Android實現帶描邊的圓角圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12

最新評論