Kotlin 進階之路2 區(qū)間與集合類型

Kotlin 進階之路 目錄

1.區(qū)間(Range)

  • 一個數(shù)學上的概念乔妈,表示范圍
  • ClosedRange的子類,IntRange最常用
  • 基本寫法:
- 0..100表示[0,100]
- 0 until 100 表示[0和橙,100)
- i in 0..100 判斷i是否在區(qū)間[0,100]中
val range: IntRange = 0..1024 //[0,1024]---閉區(qū)間
val range_exclusive: IntRange = 0 until 30 //[0,30)---半閉區(qū)間
val emptyRange: IntRange = 0..-1

fun main(args: Array<String>) {
    println(emptyRange.isEmpty())
    println(range.contains(100))
    println(50 in range)

    for (i in range_exclusive) {
        print("$i  ")
    }
}
true
true
true
0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  

2.數(shù)組類型

基本寫法:
- val array:Array<String> = arrayOf(...)

基本類型的數(shù)組

為了避免不必要的裝箱費和拆箱,基本類型的數(shù)組是定制的

Java Kotlin
int[] IntArray
short[] ShortArray
long[] LongArray
float[] FloatArray
double[] DoubleArray
char[] CharArray
基本操作
- print array[i] 輸出第i個元素
- array[i] = "Hello" 給第i個成員賦值
- array.length 數(shù)組的長度
val arrayOfInt: IntArray = intArrayOf(1, 2, 3, 4, 5, 6, 7)
val arrayOfChar: CharArray = charArrayOf('H', 'e', 'l', 'l', 'o', ',', 'W', 'o', 'r', 'l', 'd', '!')
val arrayOfString:Array<String> = arrayOf("你好","美女")

fun main(args: Array<String>) {
    println(arrayOfInt.size)
    for (i in arrayOfInt){
        println(i)
    }
    println(arrayOfInt.slice(2..4))

    println(arrayOfChar.joinToString())
    println(arrayOfChar.joinToString(""))

    println(arrayOfString[0])
    arrayOfString[1] ="帥哥"
    println(arrayOfString[1])

}
1
2
3
4
5
6
7
[3, 4, 5]
H, e, l, l, o, ,, W, o, r, l, d, !
Hello,World!
你好
/**
 *集合類型
 *
 * 同類型的值的組合裹匙,根據(jù)整體特性分:
 * 1.有序可重復 - Array 儿惫,索引從0開始(index,i)
 * 2.無序不重復 - set
 * 3.無序可重復 - Map ,有唯一的鍵(key)
 * */
fun main(args: Array<String>) {
    //Array: Array<類型> 或arrayOf(元素一、元素二列荔、元素三卸例,...元素三)
    var country = arrayOf("China", "Japan", "American", "Germany", "China", "China")

    for (s in country) {
        println(s)
    }
    //創(chuàng)建一個有默認值的數(shù)組,Array(計算,{默認值})
    println("----------------創(chuàng)建一個有默認值的數(shù)組----------------")
    var countryPlaceHolder = Array(5, { "Australian" })
    for (s in countryPlaceHolder) {
        println(s)
    }


    //創(chuàng)建1到10的數(shù)組:Array(10,{i -> i+1})
    //i代表元素的索引值肌毅,從0開始
    println("----------------創(chuàng)建1到10的Array數(shù)組----------------")
    var oneToTen = Array(10, { i -> i + 1 })
    for (i in oneToTen) {
        println(i)
    }
    //元素計數(shù):count,空否:isEmpty()
    println("元素計數(shù):" + oneToTen.count())
    println("元素是否為空:" + oneToTen.isEmpty())

    //獲取其中元素:數(shù)組名{索引}姑原,首元素:數(shù)組名.frist悬而,尾元素:數(shù)組名.last
    //獲取前5各元素的快捷方法.compoent 1到5
    println("${oneToTen.component1()},${oneToTen.component2()}")
    println("獲取第三個元素" + oneToTen[2])
    println("獲取最后一個元素" + oneToTen.last())

    //獲取篩選重復后的數(shù)組:.distinct() 或用.toSet()轉(zhuǎn)換為set。
    println("----------------獲取篩選重復后的數(shù)組----------------")
    val countryNotRepeat = country.distinct()
    for (i in countryNotRepeat) {
        println(i)
    }
    println("----------------獲取篩選重復后的set----------------")
    val countryNotRepeat2 = country.toSet()
    for (i in countryNotRepeat2) {
        println(i)
    }
    //切割數(shù)組:sliceArray
    println("----------------切割數(shù)組:sliceArray----------------")
    val countrySlice = country.sliceArray(2..3)
    for (s in countrySlice) {
        println(s)
    }

    //mutableList:MutableList<類型>或mutableListOf(元素1锭汛,元素2笨奠,...,元素n)
    //大小可變唤殴,類型不可變
    println("----------------新建mutableList----------------")
    var mutableCountry = mutableListOf("China", "Japan", "American", "Germany", "China", "China")

    for (s in mutableCountry) {
        println(s)
    }

    println("----------------移除首位置元素----------------")
    mutableCountry.removeAt(0)
    for (s in mutableCountry) {
        println(s)
    }



    //在末尾增加元素:add元素般婆,添加另一個數(shù)組addAll方法
    println("----------------add添加元素----------------")
    mutableCountry.add("Korea")
    for (s in mutableCountry) {
        println(s)
    }
    val newCountry = arrayOf("Britain", "France")
    println("----------------整體添加元素----------------")
    mutableCountry.addAll(newCountry)
    for (s in mutableCountry) {
        println(s)
    }

    println("----------------移除新加的數(shù)組元素----------------")
    mutableCountry.removeAll(newCountry)
    for (s in mutableCountry) {
        println(s)
    }

    println("----------------獲取篩選重復后的mutableList----------------")
    for (s in mutableCountry.distinct()) {
        println(s)
    }
}
China
Japan
American
Germany
China
China
----------------創(chuàng)建一個有默認值的數(shù)組----------------
Australian
Australian
Australian
Australian
Australian
----------------創(chuàng)建1到10的Array數(shù)組----------------
1
2
3
4
5
6
7
8
9
10
元素計數(shù):10
元素是否為空:false
1,2
獲取第三個元素3
獲取最后一個元素10
----------------獲取篩選重復后的數(shù)組----------------
China
Japan
American
Germany
----------------獲取篩選重復后的set----------------
China
Japan
American
Germany
----------------切割數(shù)組:sliceArray----------------
American
Germany
----------------新建mutableList----------------
China
Japan
American
Germany
China
China
----------------移除首位置元素----------------
Japan
American
Germany
China
China
----------------add添加元素----------------
Japan
American
Germany
China
China
Korea
----------------整體添加元素----------------
Japan
American
Germany
China
China
Korea
Britain
France
----------------移除新加的數(shù)組元素----------------
Japan
American
Germany
China
China
Korea
----------------獲取篩選重復后的mutableList----------------
Japan
American
Germany
China
Korea

3.Set集合

/**
 * 集合類型 Set:無序不重復
 * 主要方法 交差并補
 * */
fun main(args: Array<String>) {

    //Set<類型> 或 setOf(元素1,元素2朵逝,...蔚袍,元素n)
    //大小不固定,元素類型不可變

    val country = setOf("Britain", "France", "China", "Japan", "American", "Germany")
    val countryAsia = setOf("China", "Japan", "Korea", "Vietnam")
    val countryPermanent = setOf("American", "China", "France", "Britain", "Russia")
    for (s in country) {
        println(s)
    }

    //元素計數(shù):count()配名,空否:isEmpty()
    println("元素計數(shù):" + country.count())

    //檢查是否包含某個元素:contains啤咽,包含另一個set:containAll
    println("否包含China元素:" + country.contains("China"))

    //轉(zhuǎn)換成數(shù)組:toTypedArray()
    println("----------------轉(zhuǎn)換成數(shù)組:toTypedArray()----------------")
    val array = country.toTypedArray()
    for (s in array) {
        println(s)
    }
    //結(jié)合之間的運算:intersect/subtract/union/minus(補集的被操作對象無需是Set類型)
    println("----------------集合交集數(shù)據(jù):intersect----------------")
    val interCountry = country.intersect(countryAsia)
    for (s in interCountry) {
        println(s)
    }
    println("----------------集合差集數(shù)據(jù):subtract----------------")
    val subtractCountry = country.subtract(countryAsia)
    for (s in subtractCountry) {
        println(s)
    }
    println("----------------集合并集數(shù)據(jù):union----------------")
    val unionCountry = country.union(countryAsia).union(countryPermanent)
    for (s in unionCountry) {
        println(s)
    }
    println("----------------集合補集數(shù)據(jù):minus----------------")
    val minusCountry = country.minus(countryAsia)
    for (s in minusCountry) {
        println(s)
    }
    //MutableSet<類型>或mutableSetOf(元素1,元素2渠脉,...宇整,元素n)
    //大小可變,類型不可變
    val mutableCountry = country.union(countryAsia).toMutableSet()
    println("----------------MutableSet----------------")
    for (s in mutableCountry) {
        println(s)
    }
    println("----------------MutableSet添加數(shù)據(jù):add----------------")
    mutableCountry.add("Thailand")
    for (s in mutableCountry) {
        println(s)
    }
    println("----------------MutableSet添加集合數(shù)據(jù):addAll----------------")
    val newCountry = setOf("Brazil","Mexico")
    mutableCountry.addAll(newCountry)
    for (s in mutableCountry) {
        println(s)
    }
    println("----------------MutableSet移除數(shù)據(jù):remove----------------")
    //移除元素:remove芋膘,移除另一集合:removeAll
    mutableCountry.remove("Thailand")
    for (s in mutableCountry) {
        println(s)
    }
    println("----------------MutableSet移除集合數(shù)據(jù):removeAll----------------")
    //移除集合元素:removeAll鳞青,移除另一集合:removeAll
    mutableCountry.removeAll(newCountry)

    for (s in mutableCountry) {
        println(s)
    }
}
Britain
France
China
Japan
American
Germany
元素計數(shù):6
否包含China元素:true
----------------轉(zhuǎn)換成數(shù)組:toTypedArray()----------------
Britain
France
China
Japan
American
Germany
----------------集合交集數(shù)據(jù):intersect----------------
China
Japan
----------------集合差集數(shù)據(jù):subtract----------------
Britain
France
American
Germany
----------------集合并集數(shù)據(jù):union----------------
Britain
France
China
Japan
American
Germany
Korea
Vietnam
Russia
----------------集合補集數(shù)據(jù):minus----------------
Britain
France
American
Germany
----------------MutableSet----------------
Britain
France
China
Japan
American
Germany
Korea
Vietnam
----------------MutableSet添加數(shù)據(jù):add----------------
Britain
France
China
Japan
American
Germany
Korea
Vietnam
Thailand
----------------MutableSet添加集合數(shù)據(jù):addAll----------------
Britain
France
China
Japan
American
Germany
Korea
Vietnam
Thailand
Brazil
Mexico
----------------MutableSet移除數(shù)據(jù):remove----------------
Britain
France
China
Japan
American
Germany
Korea
Vietnam
Brazil
Mexico
----------------MutableSet移除集合數(shù)據(jù):removeAll----------------
Britain
France
China
Japan
American
Germany
Korea
Vietnam

4.Map集合

/**
 * 集合類型 Map :無序可重復,類似于"字典"的意思
 *
 * */
fun main(args: Array<String>) {

    //mapOf<Key,Value>(Pair(key,value)为朋,...)
    //顯示指定類型臂拓,可防止初始化值類型的錯誤

    val products = mapOf<String, String>(Pair("IPhone", "6888"), Pair("Xiaomi", "3499"), Pair("Huawei", "5999"))

    //元素計數(shù):size,空否:isEmpty
    println("元素計數(shù):" + products.size)

    //獲取某個key對應的value:get潜腻,getOrDefalt
    println("獲取某個key對應的value:" + products.get("IPhone"))
    println("獲取某個key對應的value埃儿,給定默認值:" + products.getOrDefault("ZTE", "0"))
    println("----------------獲得map所有的key:keys----------------")
    //返回所有的key:keys,所有的value:values
    for (key in products.keys) {
        println(key)
    }
    println("----------------獲得map所有的value:values----------------")
    for (value in products.values) {
        println(value)
    }

    //mutableMapOf<Key,Value>(Pair(key,value),...)
    val mutableProducts = products.toMutableMap()
    println("----------------獲得map所有的value:values----------------")
    //添加或更新:下標方法 map變量名[key] = value
    mutableProducts["IPhone"]="7999"
    mutableProducts["Xiaomi"]="1999"
    for (mutableProduct in mutableProducts) {
        println("${mutableProduct.key}融涣,"+"${mutableProduct.value}")
    }
    
    
    println("----------------移除元素:remove----------------")
    //移除元素:remove
    mutableProducts.remove("IPhone")
    for (mutableProduct in mutableProducts) {
        println("${mutableProduct.key}童番,"+"${mutableProduct.value}")
    }
    
    
    println("----------------添加元素:put----------------")
    //添加元素:remove
    mutableProducts.put("Samsung","6999")
    for (mutableProduct in mutableProducts) {
        println("${mutableProduct.key}精钮,"+"${mutableProduct.value}")
    }
}
元素計數(shù):3
獲取某個key對應的value:6888
獲取某個key對應的value,給定默認值:0
----------------獲得map所有的key:keys----------------
IPhone
Xiaomi
Huawei
----------------獲得map所有的value:values----------------
6888
3499
5999
----------------獲得map所有的value:values----------------
IPhone剃斧,7999
Xiaomi轨香,1999
Huawei,5999
----------------移除元素:remove----------------
Xiaomi幼东,1999
Huawei臂容,5999
----------------添加元素:put----------------
Xiaomi,1999
Huawei根蟹,5999
Samsung脓杉,6999
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市简逮,隨后出現(xiàn)的幾起案子球散,更是在濱河造成了極大的恐慌,老刑警劉巖散庶,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕉堰,死亡現(xiàn)場離奇詭異,居然都是意外死亡悲龟,警方通過查閱死者的電腦和手機屋讶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來须教,“玉大人皿渗,你說我怎么就攤上這事∶恍叮” “怎么了羹奉?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長约计。 經(jīng)常有香客問我诀拭,道長,這世上最難降的妖魔是什么煤蚌? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任耕挨,我火速辦了婚禮,結(jié)果婚禮上尉桩,老公的妹妹穿的比我還像新娘筒占。我一直安慰自己,他們只是感情好蜘犁,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布翰苫。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奏窑。 梳的紋絲不亂的頭發(fā)上导披,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音埃唯,去河邊找鬼撩匕。 笑死,一個胖子當著我的面吹牛墨叛,可吹牛的內(nèi)容都是我干的止毕。 我是一名探鬼主播贰您,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼倡勇,長吁一口氣:“原來是場噩夢啊……” “哼匿醒!你這毒婦竟也來了弛姜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤棺棵,失蹤者是張志新(化名)和其女友劉穎挂据,沒想到半個月后组贺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丸边,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年荚孵,在試婚紗的時候發(fā)現(xiàn)自己被綠了妹窖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡收叶,死狀恐怖骄呼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情判没,我是刑警寧澤蜓萄,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站澄峰,受9級特大地震影響嫉沽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜俏竞,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一绸硕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧魂毁,春花似錦玻佩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烦秩,卻和暖如春垮斯,著一層夾襖步出監(jiān)牢的瞬間郎仆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工甚脉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留丸升,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓牺氨,卻偏偏與公主長得像狡耻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子猴凹,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容