最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kotlin數(shù)據(jù)容器深入講解

 更新時(shí)間:2022年09月13日 17:04:00   作者:Ken'  
Kotlin的數(shù)據(jù)容器分為數(shù)組和集合。其中集合分為集合Set、隊(duì)列List、映射Map等三種集合,每種又包括只讀和可變兩種類(lèi)型,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧

前言

容器是用于存放數(shù)據(jù)的載體。容器分為數(shù)組、集合。 Kotlin 作為一門(mén)全新的語(yǔ)言,肯定還是要有自己的容器類(lèi),不然哪天 Java 跟 Kotlin 劃清界限,那麻煩就大了。 Kotlin 也擁有三類(lèi)基本的容器,分別是集合 Set、隊(duì)列 List、映射 Map,每種 容器又分作只讀與可變兩種類(lèi)型這是為了判斷該容器能否進(jìn)行增刪改等變更操作。

• Kotlin 數(shù)組

• Kotlin 集合

一、Kotlin數(shù)組

數(shù)組是一種初始化時(shí)指定容器大小,不可以動(dòng)態(tài)調(diào)整其大小的容器。元素按 順序存儲(chǔ)在一串連續(xù)的內(nèi)存段上。

1、Kotlin數(shù)組創(chuàng)建技巧

arrayOf 創(chuàng)建數(shù)組

創(chuàng)建一個(gè)數(shù)組并傳遞元素值給它, 集合中的元素可以是任意類(lèi)型

val array = arrayOf(1, 2, 3) 
val array = arrayOf(1, true, "2", JSONObject()) // 集合中的元素可以是任意
類(lèi)型

arrayOfNulls 創(chuàng)建數(shù)組

創(chuàng)建一個(gè)指定大小的、所有元素都為空的數(shù)組,但必須指定集合中的元素類(lèi)型

val arrayOfNulls = arrayOfNulls<String>(5) //創(chuàng)建一個(gè)指定大小的、所有元素
都為空的數(shù)

動(dòng)態(tài)創(chuàng)建數(shù)組

用接受數(shù)組大小以及一個(gè)方法參數(shù)的 Array 構(gòu)造方法,用作參數(shù)的方法能夠 返回給定索引的每個(gè)元素初始值:

// 創(chuàng)建一個(gè) Array<String> 初始化為 ["0", "1", "4", "9", "16"]
val asc = Array(5) { i -> (i * i).toString() }
asc.forEach { println(it) }

2、原生類(lèi)型數(shù)組

在 Kotlin 中也有無(wú)裝箱開(kāi)銷(xiāo)的專(zhuān)門(mén)的類(lèi)來(lái)表示原生類(lèi)型數(shù)組:

IntArray 函數(shù)

// 1.創(chuàng)建并初始化一個(gè) IntArray [1, 2, 3, 4, 5]
val intArray = IntArray(1, 2, 3, 4, 5)
// 2.創(chuàng)建一個(gè)長(zhǎng)度為 5 的空的 IntArray
val intArray2 = IntArray(5)
// 3.創(chuàng)建一個(gè)長(zhǎng)度為 5 的值全為 100 的 IntArray [100, 100, 100, 100, 100]
val intArr2 = IntArray(5) { 100 }
// 4.注意這里 it 是它索引下標(biāo)值,所以這是創(chuàng)建一個(gè)長(zhǎng)度為 5 的 IntArray [0, 2, 4,
6, 8]
val intArr3 = IntArray(5) { it * 2 

Tips

在 Kotlin 數(shù)組類(lèi)型不是集合中的一種,但是它又和集合有著太多相似的地 方。 數(shù)組和集合可以互換初始化集合的時(shí)候可以傳入一個(gè)數(shù)組

3、數(shù)組常見(jiàn)的操作

獲取元素

val array =arrayOf(1,2,3,4,5)
array[index] // 獲取數(shù)組的第 index 個(gè)元素,下標(biāo)從 0 開(kāi)始
array.component1() … arr.component5()獲取數(shù)組的前 5 個(gè)元素。同樣適用于集合

for 循環(huán)——元素遍歷

for (item in array) { // 元素遍歷
 println(item)
 //1
 //2
 //3
 //4
 //5
}

for 循環(huán)——下標(biāo)遍歷

for (i in array.indices) { // 根據(jù)下標(biāo)再取出對(duì)應(yīng)位置的元素
 println(i.toString() + "->" + array[i])=
 //0->1
 //1->2,
 //2->3,
 //3->4,
 //4->5
}

forEach 遍歷數(shù)組

array.forEach {
 println(it)
 //1
 //2
 //3
 //4
 //
}

forEach 增強(qiáng)版

array.forEachIndexed { index, item ->
 println("$index:$item")
 //0:1
 //1:2
 //2:3
 //3:4
 //4:5
}

數(shù)組翻轉(zhuǎn)

array.reverse()
>> println(array) = 5,4,3,2,1

二、Kotlin集合

Kotlin 標(biāo)準(zhǔn)庫(kù)提供了一整套用于管理集合的工具,集合是可變數(shù)量(可能為 零)的一組條目,各種集合對(duì)于解決問(wèn)題都具有重要意義,并且經(jīng)常用到。 與數(shù)組不同的是可變集合的大小可以動(dòng)態(tài)改變。

• List: 是一個(gè)有序集合,可通過(guò)索引(反映元素位置的整數(shù))訪問(wèn)元 素。元素可以在 list 中出現(xiàn)多次。列表的一個(gè)示例是一句話:有一組 字、這些字的順序很重要并且字可以重復(fù)。

• Set: 是唯一元素的集合。它反映了集合(set)的數(shù)學(xué)抽象:一組無(wú)重 復(fù)的對(duì)象。一般來(lái)說(shuō) set 中元素的順序并不重要。例如,字母表是字 母的集合(set)。

• Map:(或者字典)是一組鍵值對(duì)。鍵是唯一的,每個(gè)鍵都剛好映射到 一個(gè)值,值可以重復(fù)。

1、集合創(chuàng)建的技巧

集合分為

可變集合,顯而易見(jiàn),是指集合創(chuàng)建完成之后,可以對(duì)集合進(jìn)行增 刪改查操作

不可變集合,顯而易見(jiàn),是指指集合創(chuàng)建完成之后,不能對(duì)集合進(jìn)行增刪改 查操作,會(huì)拋異常。

List 隊(duì)列

隊(duì)列是一種元素之間按照順序排列的容器,它與集合的最大區(qū)別,便是多了 個(gè)次序管理。不要小看這個(gè)有序性,正因?yàn)殛?duì)列建立了秩序規(guī)則,所以它比 集合多提供了如下功能(注意凡是涉及到增刪改的,都必須由 MutableList 來(lái) 完成):

• 不可變集合

val strings = listOf("one", "two", "one") // 不可以對(duì) strings 進(jìn)行增刪改查操作

• 可變集合

val numbers = mutableListOf<Int>(1, 2, 3, 4) // 可以對(duì) numbers 進(jìn)行增刪改查
操作
val numbers = arrayListOf<Int>(1, 2, 3

Tips

不難發(fā)現(xiàn),每個(gè)不可變集合都有對(duì)應(yīng)的可變集合,也就是以 mutable 為前綴 的集合。

• 不可變的 List 類(lèi)型集合的初始化使用:listOf 函數(shù)

• 可變的 List 類(lèi)型集合的初始化使用:mutableListOf 函數(shù)

Set 集合

1、容器內(nèi)部的元素不按順序排列,因此無(wú)法按照下標(biāo)進(jìn)行訪問(wèn);

2、容器內(nèi)部的元素存在唯一性,通過(guò)哈希值校驗(yàn)是否存在相同的元素,如果 存在則覆蓋之;

• 不可變集合

val hello = setOf("H", "e", "l", "l", "o")//自動(dòng)過(guò)濾重復(fù)元素
>> println(hello) = H", "e", "l","w", "o"

• 可變集合

val hello = mutableSetOf("H", "e", "l", "l", "o") //自動(dòng)過(guò)濾掉重復(fù)元素
>> println(hello) = H", "e", "l","w", "o", "r", "l", "d

Tips

• 不可變的 set 類(lèi)型集合的初始化使用:setOf 函數(shù)

• 可變的 set 類(lèi)型集合的初始化使用:mutableSetOf 函數(shù)

Map 字典

映射內(nèi)部保存的是一組鍵值對(duì)(Key-Value),也就是說(shuō),每個(gè)元素都由兩部 分構(gòu)成,第一部分是元素的鍵,相當(dāng)于元素的名字;第二部分是元素的值, 存放著元素的詳細(xì)信息。元素的鍵與值是一一對(duì)應(yīng)的關(guān)系,相同的鍵名指向 的值對(duì)象是唯一的,所以映射中每個(gè)元素的鍵名各不相同,這個(gè)特性使得映射的變更操作與隊(duì)列存在以下不同之處(注意增刪操作必須由 MutableMap 來(lái)完成):

• 不可變集合

val numbersMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key4" to
1)
>> println("${numbersMap.keys}")= key1,key2,key3,key4 
>> println("${numbersMap.values}") = 1,2,3,1

• 可變集合

val numbersMap = mutableMapOf("key1" to 1, "key2" to 2, "key3" to 3,
"key4" to 1)
>> println("${numbersMap.keys}")= key1,key2,key3,key4 
>> println("${numbersMap.values}") = 1,2,3,1

Tips

• 不可變的 map 類(lèi)型集合的初始化使用:mapOf 函數(shù)

• 可變的 map 類(lèi)型集合的初始化使用:mutableMapOf 函數(shù)

2、集合的操作

增刪改查

val stringList = listOf("one", "two", "one") 以 list 集合為例,set,map 同樣
具備以下能力
numbers.add(5) // 集合最后面添加元素 5
numbers.addAt(1,5) // 向下標(biāo)為 1 的位置,添加元素 5,下標(biāo)為 1 及之后位置的
元素,以此后移
numbers.remove("one") // 刪除元素“one”
numbers.removeAt(1) // 刪除下標(biāo)為 1 的元素
numbers.set(0) = 0 // 下標(biāo)為 0 的元素設(shè)置為 0
numbers.get(0)==>1 // 獲取下標(biāo)為 0 的元素,結(jié)果為 

變換操作

在 Kotlin 中提供了強(qiáng)大對(duì)的集合排序的 API,讓我們一起來(lái)學(xué)習(xí)一下:

到此這篇關(guān)于Kotlin數(shù)據(jù)容器深入講解的文章就介紹到這了,更多相關(guān)Kotlin數(shù)據(jù)容器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • android教程之service使用方法示例詳解

    android教程之service使用方法示例詳解

    這篇文章主要介紹了android中的service使用方法示例,需要的朋友可以參考下
    2014-02-02
  • 使用Kotlin開(kāi)發(fā)Android應(yīng)用的初體驗(yàn)

    使用Kotlin開(kāi)發(fā)Android應(yīng)用的初體驗(yàn)

    本篇文章主要介紹了使用Kotlin開(kāi)發(fā)Android應(yīng)用的初體驗(yàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Android開(kāi)發(fā)之超強(qiáng)圖片工具類(lèi)BitmapUtil完整實(shí)例

    Android開(kāi)發(fā)之超強(qiáng)圖片工具類(lèi)BitmapUtil完整實(shí)例

    這篇文章主要介紹了Android開(kāi)發(fā)之超強(qiáng)圖片工具類(lèi)BitmapUtil,結(jié)合完整實(shí)例形式分析了Android圖片的常用操作技巧,包括圖片的加載、轉(zhuǎn)換、縮放、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • Android開(kāi)發(fā)中ListView自定義adapter的封裝

    Android開(kāi)發(fā)中ListView自定義adapter的封裝

    這篇文章主要為大家詳細(xì)介紹了android開(kāi)發(fā)中ListView自定義adapter的封裝,ListView的模板寫(xiě)法,感興趣的小伙伴們可以參考一下
    2016-09-09
  • android仿微信聯(lián)系人索引列表功能

    android仿微信聯(lián)系人索引列表功能

    這篇文章主要為大家詳細(xì)介紹了android仿微信聯(lián)系人索引列表功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Android自定義超級(jí)炫酷的ViewPage指示器

    Android自定義超級(jí)炫酷的ViewPage指示器

    由于應(yīng)公司開(kāi)發(fā)要求,有一個(gè)顏色漸變帶縮放的指示器,雖然網(wǎng)上很多大佬開(kāi)源的指示器開(kāi)源庫(kù),但如果一直都是使用別人造的輪子,那么對(duì)于自身的能力是毫無(wú)提升作用的,即使是參考別人的,然后自己動(dòng)手寫(xiě)一遍那對(duì)于自身來(lái)說(shuō)也是一種升華
    2022-07-07
  • Android 通知欄的使用方法

    Android 通知欄的使用方法

    不同版本通知欄的創(chuàng)建方式不盡相同,當(dāng)前官方推薦使用 NotificationCompat 相關(guān)的API,兼容到Android 4.0,但是部分新功能,比如內(nèi)嵌回復(fù)操作,舊版本是無(wú)法支持的。
    2021-05-05
  • 詳解Android截屏事件監(jiān)聽(tīng)

    詳解Android截屏事件監(jiān)聽(tīng)

    本篇文章主要介紹了Android截屏事件監(jiān)聽(tīng),Android系統(tǒng)沒(méi)有直接對(duì)截屏事件監(jiān)聽(tīng)的接口,本文介紹了2種方法,有興趣的可以了解一下。
    2016-12-12
  • Android 攝像頭高斯模糊的示例代碼

    Android 攝像頭高斯模糊的示例代碼

    本篇文章主要介紹了Android 攝像頭高斯模糊的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • android模擬器開(kāi)發(fā)和測(cè)試nfc應(yīng)用實(shí)例詳解

    android模擬器開(kāi)發(fā)和測(cè)試nfc應(yīng)用實(shí)例詳解

    本文介紹android模擬器開(kāi)發(fā)nfc應(yīng)用詳解,大家參考使用吧
    2013-12-12

最新評(píng)論

故城县| 宝坻区| 驻马店市| 汾西县| 荣昌县| 泰兴市| 沙田区| 灌云县| 巴彦淖尔市| 蛟河市| 武冈市| 乐业县| 长宁县| 华阴市| 乌鲁木齐市| 邹城市| 靖州| 肥乡县| 灵宝市| 大冶市| 弥勒县| 淅川县| 黎川县| 阿图什市| 无极县| 吉林市| 年辖:市辖区| 怀柔区| 松阳县| 威宁| 腾冲县| 迭部县| 德昌县| 宁海县| 邢台县| 苍南县| 京山县| 根河市| 尚义县| 甘南县| 南江县|