<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 取集合的一部分 [TOC] Kotlin 標準庫包含用于取集合的一部分的擴展函數。這些函數提供了多種方法來選擇結果集合的元素:顯式列出其位置、指定結果大小等。 ## Slice [`slice()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/slice.html) 返回具有給定索引的集合元素列表。索引既可以是作為[區間](ranges.html)傳入的也可以是作為整數值的集合傳入的。 ```kotlin fun main() { //sampleStart val numbers = listOf("one", "two", "three", "four", "five", "six") println(numbers.slice(1..3)) println(numbers.slice(0..4 step 2)) println(numbers.slice(setOf(3, 5, 0))) //sampleEnd } ``` ## Take 與 drop 要從頭開始獲取指定數量的元素,請使用 [`take()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/take.html) 函數。要從尾開始獲取指定數量的元素,請使用 [`takeLast()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/take-last.html)。當調用的數字大于集合的大小時,兩個函數都將返回整個集合。 要從頭或從尾去除給定數量的元素,請調用 [`drop()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/drop.html) 或 [`dropLast()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/drop-last.html) 函數。 ```kotlin fun main() { //sampleStart val numbers = listOf("one", "two", "three", "four", "five", "six") println(numbers.take(3)) println(numbers.takeLast(3)) println(numbers.drop(1)) println(numbers.dropLast(5)) //sampleEnd } ``` 還可以使用謂詞來定義要獲取或去除的元素的數量。 有四個與上述功能相似的函數: * [`takeWhile()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/take-while.html) 是帶有謂詞的 `take()`:它將不停獲取元素直到排除與謂詞匹配的首個元素。如果首個集合元素與謂詞匹配,則結果為空。 * [`takeLastWhile()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/take-last-while.html) 與 `takeLast()` 類似:它從集合末尾獲取與謂詞匹配的元素區間。區間的首個元素是與謂詞不匹配的最后一個元素右邊的元素。如果最后一個集合元素與謂詞匹配,則結果為空。 * [`dropWhile()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/drop-while.html) 與具有相同謂詞的 `takeWhile()` 相反:它將首個與謂詞不匹配的元素返回到末尾。 * [`dropLastWhile()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/drop-last-while.html) 與具有相同謂詞的 `takeLastWhile()` 相反:它返回從開頭到最后一個與謂詞不匹配的元素。 ```kotlin fun main() { //sampleStart val numbers = listOf("one", "two", "three", "four", "five", "six") println(numbers.takeWhile { !it.startsWith('f') }) println(numbers.takeLastWhile { it != "three" }) println(numbers.dropWhile { it.length == 3 }) println(numbers.dropLastWhile { it.contains('i') }) //sampleEnd } ``` ## Chunked 要將集合分解為給定大小的“塊”,請使用 [`chunked()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/chunked.html) 函數。`chunked()` 采用一個參數(塊的大小),并返回一個 `List` 其中包含給定大小的 `List`。第一個塊從第一個元素開始并包含 `size` 元素,第二個塊包含下一個 `size` 元素,依此類推。最后一個塊的大小可能較小。 ```kotlin fun main() { //sampleStart val numbers = (0..13).toList() println(numbers.chunked(3)) //sampleEnd } ``` 還可以立即對返回的塊應用轉換。為此,請在調用 `chunked()` 時將轉換作為 lambda 函數提供。lambda 參數是集合的一塊。當通過轉換調用 `chunked()` 時,這些塊是臨時的 `List`,應立即在該 lambda 中使用。 ```kotlin fun main() { //sampleStart val numbers = (0..13).toList() println(numbers.chunked(3) { it.sum() }) // `it` 為原始集合的一個塊 //sampleEnd } ``` ## Windowed 可以檢索給定大小的集合元素中所有可能區間。 獲取它們的函數稱為 [`windowed()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/windowed.html):它返回一個元素區間列表,比如通過給定大小的滑動窗口查看集合,則會看到該區間。 與 `chunked()` 不同,`windowed()` 返回從*每個*集合元素開始的元素區間(_窗口_)。 所有窗口都作為單個 `List` 的元素返回。 ```kotlin fun main() { //sampleStart val numbers = listOf("one", "two", "three", "four", "five") println(numbers.windowed(3)) //sampleEnd } ``` `windowed()` 通過可選參數提供更大的靈活性: * `step` 定義兩個相鄰窗口的第一個元素之間的距離。默認情況下,該值為 1,因此結果包含從所有元素開始的窗口。如果將 step 增加到 2,將只收到以奇數元素開頭的窗口:第一個、第三個等。 * `partialWindows` 包含從集合末尾的元素開始的較小的窗口。例如,如果請求三個元素的窗口,就不能為最后兩個元素構建它們。在本例中,啟用 `partialWindows` 將包括兩個大小為2與1的列表。 最后,可以立即對返回的區間應用轉換。為此,在調用 `windowed()` 時將轉換作為 lambda 函數提供。 ```kotlin fun main() { //sampleStart val numbers = (1..10).toList() println(numbers.windowed(3, step = 2, partialWindows = true)) println(numbers.windowed(3) { it.sum() }) //sampleEnd } ``` 要構建兩個元素的窗口,有一個單獨的函數——[`zipWithNext()`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/zip-with-next.html)。它創建接收器集合的相鄰元素對。 請注意,`zipWithNext()` 不會將集合分成幾對;它為 _每個_ 元素創建除最后一個元素外的對,因此它在 `[1, 2, 3, 4]` 上的結果為 `[[1, 2], [2, 3], [3, 4]]`,而不是 `[[1, 2`],`[3, 4]]`。 `zipWithNext()` 也可以通過轉換函數來調用;它應該以接收者集合的兩個元素作為參數。 ```kotlin fun main() { //sampleStart val numbers = listOf("one", "two", "three", "four", "five") println(numbers.zipWithNext()) println(numbers.zipWithNext() { s1, s2 -> s1.length > s2.length}) //sampleEnd } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看