<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### **追加復制集合:plusElement** [TOC] 出處 ~~~ //Returns an array containing all elements of the original array and then the given element. //返回一個數組, 其中包含原始數組的所有元素, 和給定的元素。 fun <T> Array<T>.plusElement(element:?T): Array<T> ~~~ ?一個數組的長度是固定的,我們沒法會其添加元素,但是,kotlin提供了一個方法plusElement,可以對原集合添加元素之后,變成一個新的集合,這樣的操作在java里面是沒有的,參考代碼: ~~~ fun main(args: Array<String>) { val intArr = arrayOf(1, 2, 3) //追加元素4 val newArr = intArr.plusElement(4) println("新的數組:${newArr.toList()}") } ~~~ 運行結果 ``` 新的數組:[1, 2, 3, 4] Process finished with exit code 0 ``` 查看plusElement的源碼發現它也是復制了一個集合 ~~~ @kotlin.internal.InlineOnly public actual inline fun <T> Array<T>.plusElement(element: T): Array<T> { return plus(element) } ~~~ ~~~ public actual operator fun <T> Array<T>.plus(element: T): Array<T> { val index = size val result = java.util.Arrays.copyOf(this, index + 1) result[index] = element return result } ~~~ ### **刪除復制集合:drop和dropLast** **一個數組的長度是固定的,我們沒法刪除其元素**,但是,kotlin提供了2個方法**drop和dropLast**。 * drop方法:接收一個Int類型參數,表示可以**指定從數組開始位置移除原數組的幾個元素**。 * dropLast,方法接收一個Int類型參數,表示可以指定從數組末尾位置移除原數組的幾個元素。 這樣的操作在java里面是沒有的,參考代碼: ~~~ fun main(args: Array<String>) { val intArr = arrayOf(1, 2, 3, 4, 5) // intArr[-1] println("-----------原數組-----------") println("原數組是:${intArr.toList()}") //追加元素6 val newArr = intArr.plusElement(6) println("新的數組newArr:${newArr.toList()}") //刪除復制數組 println("---------從頭開始刪除2個元素-------------") val newArr2 = intArr.drop(2) println("新的數組newArr2:${newArr2.toList()}") println("---------從頭開始刪除2個元素-------------") val newArr3 = intArr.dropLast(2) println("新的數組newArr3:${newArr3.toList()}") //分割數組 println("-----------分割數組-----------") //取數組索引[0-3]對應的元素 val sliceArray1 = intArr.sliceArray(0..3) println("新的數組sliceArray1:${sliceArray1.toList()}") //取數組索引[2-4]對應的元素 val sliceArray2 = intArr.sliceArray(2..4) println("新的數組sliceArray2:${sliceArray2.toList()}") } ~~~ 運行結果 ``` -----------原數組----------- 原數組是:[1, 2, 3, 4, 5] 新的數組newArr:[1, 2, 3, 4, 5, 6] ---------從頭開始刪除2個元素------------- 新的數組newArr2:[3, 4, 5] ---------從頭開始刪除2個元素------------- 新的數組newArr3:[1, 2, 3] -----------分割數組----------- 新的數組sliceArray1:[1, 2, 3, 4] 新的數組sliceArray2:[3, 4, 5] Process finished with exit code 0 ``` 針對以上代碼同樣drop和dropLast內部肯定也是通過復制集合實現的,這里源碼如下了。 ~~~ //Returns a list containing all elements except first [n] elements. //返回包含除前 n 個元素以外的所有元素的列表。 public fun <T> Array<out T>.drop(n: Int): List<T> { require(n >= 0) { "Requested element count $n is less than zero." } return takeLast((size - n).coerceAtLeast(0)) } ~~~ ~~~ //Returns a list containing all elements except last [n] elements. //返回包含除最后n個元素之外的所有元素的列表。 public fun <T> Array<out T>.dropLast(n: Int): List<T> { require(n >= 0) { "Requested element count $n is less than zero." } return take((size - n).coerceAtLeast(0)) } ~~~ ### **分割:slice方法** slice英語單詞是“切分”的意思,sliceArray ()方法位表示可以對原數組進行切分,返回一個新的數組。參數接收一個區間, sliceArray方法源碼如下: ~~~ //Returns a list containing elements at indices in the specified indices range. // 返回包含指定索引范圍內索引處的元素的列表。 public fun <T> Array<T>.sliceArray(indices: IntRange): Array<T> { if (indices.isEmpty()) return copyOfRange(0, 0) return copyOfRange(indices.start, indices.endInclusive + 1) } ~~~ 我們編寫一個案例看一下,參考代碼: 正如上面的代碼中所示,這里只截取分割部分的代碼 ~~~ fun main(args: Array<String>) { val intArr = arrayOf(1, 2, 3, 4, 5) //分割數組 println("-----------分割數組-----------") //取數組索引[0-3]對應的元素 val sliceArray1 = intArr.sliceArray(0..3) println("新的數組sliceArray1:${sliceArray1.toList()}") //取數組索引[2-4]對應的元素 val sliceArray2 = intArr.sliceArray(2..4) println("新的數組sliceArray2:${sliceArray2.toList()}") } ~~~ ### **數組下標越界** 數組下標越界,可以說是數組操作的一個經典問題。 是什么數組下標越界呢?我們在用數組下標去獲取元素的時候,如果給定的下標大于了集合長度或者下標為負數,則會出現下標越界異常,程序會拋ArrayIndexOutOfBoundsException異常, 我們先把下標給成負數,參考案例: ~~~ fun main(args: Array<String>) { val intArr = arrayOf(1, 2, 3) intArr[-1] } ~~~ 運行結果 ``` Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1 at day02.ArrayDemo7Kt.main(ArrayDemo7.kt:12) Process finished with exit code 1 ```
                  <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>

                              哎呀哎呀视频在线观看