日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Kotlin】循环控制流 ( for 循环 | Iterator 遍历形式 | Iterator 遍历要求 | IntArray 源码解析 )

發布時間:2025/6/17 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Kotlin】循环控制流 ( for 循环 | Iterator 遍历形式 | Iterator 遍历要求 | IntArray 源码解析 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、For 循環
  • 二、For 循環遍歷 Iterator 對象
  • 三、Iterator 遍歷要求
  • 四、IntArray 源碼解析





一、For 循環



For 循環有兩種遍歷形式 :

  • 一種是 遍歷提供了迭代器 ( Iterator ) 的對象 ;
  • 另一種是 使用區間表達式進行遍歷 ;




二、For 循環遍歷 Iterator 對象



提供了 Iterator 迭代器的對象基本就是 集合 或者 數組 對象 ,


遍歷格式 : for ( 元素 in 集合/數組對象 ){ 遍歷內容 }

代碼示例 :

fun main() {// Kotlin 集合var list : List<Int> = listOf<Int>(0, 1, 2, 3, 4)// Kotlin 數組var array : IntArray = intArrayOf(5, 6, 7, 8, 9)println("遍歷集合")// 遍歷集合for(i in list){println(i)}println("\n遍歷數組")// 遍歷數組for(i in array){println(i)} }

執行結果 :

遍歷集合 0 1 2 3 4遍歷數組 5 6 7 8 9



三、Iterator 遍歷要求



使用 for(i in array) 對 array 對象進行遍歷 , 有以下要求 :

  • 被遍歷的對象必須 定義了 iterator() 方法 , 返回 Iterator 迭代器類型 , 并且該方法必須 標記為 operator ;
  • Iterator 迭代器必須有 next() 函數 , 并且該方法必須 標記為 operator ;
  • Iterator 迭代器必須有 hasNext() 函數 , 返回 Boolean 類型 , 并且該方法必須 標記為 operator ;

interface Iterator 接口 自帶的 next() , hasNext() : Boolean 兩個方法 本身就滿足上述要求 ;





四、IntArray 源碼解析



下面針對 IntArray 進行分析 ;


在下面的 IntArray 中提供了 public operator fun iterator(): IntIterator 方法 , 提供了一個 Iterator 迭代器 , 該 IntIterator 實現了 Iterator 接口 ;


該 iterator() 方法有 operator 修飾 ;


/*** Int 類型數組 ;* 在 Java 虛擬機中 , 該對象會被當做 int[] 對象 ; * @constructor 創建一個 size 大小的數組 , 其初始值默認都為 0 ; */ public class IntArray(size: Int) {/*** 創建一個數組 , 指定大小為 size , * 每個元素的值通過調用特殊的 (Int) -> Int 類型的 函數 / Lambda 表達式 進行計算 ; * * init 函數調用順序 : 從第一個元素開始調用 , 按照元素順序執行 ; * init 函數應該返回對應元素索引的元素值大小 ; */public inline constructor(size: Int, init: (Int) -> Int)/*** 返回 index 索引位置的元素值 , 該方法可以使用索引操作符調用 [] ; * 如果索引超出邊界 , 會拋出數組越界異常*/public operator fun get(index: Int): Int/*** 設置 index 索引的值 , 可以使用索引操作符 [] 進行操作 ; * 如果索引超出邊界 , 會拋出數組越界異常*/public operator fun set(index: Int, value: Int): Unit/** 返回數組元素個數. */public val size: Int/** 為數組元素創建一個迭代器 . 注意此處的 iterator() 方法有 operator 標記 ★ */public operator fun iterator(): IntIterator }

下面是 IntIterator 的源碼 , 其 實現了 Iterator 接口 ;


/** Int 類型值序列的迭代器 , 用于迭代獲取 Int 類型 ; */ public abstract class IntIterator : Iterator<Int> {override final fun next() = nextInt()/** 返回序列中的下一個 Int 值 */public abstract fun nextInt(): Int }

Iterator 接口中的 next() 和 fun hasNext(): Boolean , 有 operator 修飾 , 因此只要在對象中定義的 iterator() 方法返回該接口實現類 , 并且使用 operator 修飾該方法 , 即可使用 for 循環遍歷該對象 ;


/*** 集合或者其它對象的迭代器可以當做一個元素序列 ; * 通過該迭代器, 可以按照順序遍歷元素 ; */ public interface Iterator<out T> {/*** 返回迭代器的下一個值 * 注意此處的 next() 方法有 operator 標記 ★*/public operator fun next(): T/*** 如果有下一個元素 , 返回 true* 注意此處的 hasNext() 方法有 operator 標記 ★*/public operator fun hasNext(): Boolean }

總結

以上是生活随笔為你收集整理的【Kotlin】循环控制流 ( for 循环 | Iterator 遍历形式 | Iterator 遍历要求 | IntArray 源码解析 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。