Kotlin 集合-- arrayOf

package com.init.demo.demo1

fun main(args: Array<String>) {
    var nollStations = arrayOf("江北機場", "兩路", "", "", "金童路", "重慶北站南廣場", "龍頭寺", "獅子坪", "紅旗河溝",
            "觀音橋", "牛角沱", "兩路口", "工毛", "銅元局", "南平", "四公里", "九公里", "魚洞")
    println("元素個數nollStations.size:${nollStations.size}或者元素個數nollStations.count():${nollStations.count()}")
    println("第1個nollStations.first():${nollStations.first()}")
    println("第1個nollStations.component1():${nollStations.component1()}")
    println("第2個nollStations.component2():${nollStations.component2()}")
    println("第3個nollStations.component3():${nollStations.component3()}")
    println("第4個nollStations.component4():${nollStations.component4()}")
    println("第5個nollStations.component5():${nollStations.component5()}")
    println("最後1個ollStations.last():${nollStations.last()}")
    println("其他元素的取出nollStations[x]:${nollStations[10]}")
    println("檢查是否包含某個元素nollStations.contains():${nollStations.contains("四公里")}")
    println("查找元素nollStations.find { it.contains() }:${nollStations.find { it.contains("公") }}")
    println("查找最後一個匹配元素nollStations.findLast { it.contains() }:${nollStations.findLast { it.contains("公") }}")
    println("輸出一個元素逗號分割形式的字符串nollStations.joinToString():${nollStations.joinToString()}")
    println("輸出一個元素逗號分割形式的字符串,末尾添加字符nollStations.joinToString{}:${nollStations.joinToString { it + "站" }}")
    /**
     * separator :分隔符
     * prefix:前後綴
     * limit : 元素限制
     */
    println("輸出一個元素逗號分割形式的字符串,nollStations." +
            "joinToString() 版本增強函數:${nollStations.joinToString(separator = "->", prefix = "輕軌3號線:", limit = 4)}")
    println("丟棄前面x個元素丟棄nollStations.drop(x):${nollStations.drop(4)}")
    println("丟棄前面不爲空的元素丟棄ollStations.dropWhile{}:${nollStations.dropWhile { it.isNotEmpty() }}")
    println("丟棄最後x個元素nollStations.dropLast(x):${nollStations.dropLast(10)}")
    println("丟棄最後不爲空的元素丟棄nollStations.dropLastWhile{}:${nollStations.dropLastWhile { it.isNotEmpty() }}")
    println("取出前面x個元素丟棄nollStations.take(x):${nollStations.take(4)}")
    println("取出後面x個元素丟棄nollStations.takeLast(x):${nollStations.takeLast(4)}")
    println("切割數組--取出指定範圍內元素nollStations.sliceArray(2..5).joinToString():${nollStations.sliceArray(2..5).joinToString()}")
    println("數組反轉1--將自身元素首尾順序顛倒nollStations.reversed().joinToString():${nollStations.reversed().joinToString()}")
    println("數組反轉2--將自身元素首尾順序顛倒nollStations.reversedArray().joinToString():${nollStations.reversedArray().joinToString()}")

    println("**********************************************數字型的數組排序****************************************************")
    val numbers = arrayOf(0, -9, 10, 5, 89, 26, 34)
    println("數組排序-升序numbers.sorted().joinToString():${numbers.sorted().joinToString()}")
    println("數組排序-降序numbers.sorted().joinToString():${numbers.sortedArrayDescending().joinToString()}")
    println("地鐵名按長度排序-升序nollStations.sortedBy{}:${nollStations.sortedBy { s -> s.length }}")
    println("地鐵名按長度排序-升序nollStations.sortedBy{it.length}:${nollStations.sortedBy { it.length }}")
    println("地鐵名按長度排序-降序nollStations.sortedByDescending{}:${nollStations.sortedByDescending { s -> s.length }}")
    println("地鐵名按長度排序-降序nollStations.sortedByDescending{it.length}:${nollStations.sortedByDescending { it.length }}")
    println("數字型數組轉換成字符串數組並加前綴numbers.map {}:${numbers.map { it -> "數字:" + it }}")
    println("數字型數組篩選numbers.filter{}:${numbers.filter { it % 2 == 0 }}")
    println("數字型數組最大值numbers.max():${numbers.max()}")
    println("數字型數組最小值{numbers.min():${numbers.min()}")
    println("地鐵名最長的一個元素nollStations.maxBy { s->s.length }:${nollStations.maxBy { s -> s.length }}")
    println("地鐵名最小的一個元素nollStations.minBy { s->s.length }:${nollStations.minBy { s -> s.length }}")
    println("地鐵名長度不同的元素nollStations.distinctBy { s->s.length }:${nollStations.distinctBy { s -> s.length }}")
    println("返回刪除重複元素的新數組nollStations.distinct():${nollStations.distinct()}")
    println("**********************************************數組判定****************************************************")
    println("數組中數字所有元素是否>0-numbers.all {  it > 0}:${numbers.all { it > 0 }}")
    println("數組中數字有元素是否<0-numbers.any {  it< 0}:${numbers.any { it < 0 }}")
    //all 和 any 相對應,all是所有元素都要滿足才爲true,any是要至少一個條件才爲true,none是所有元素都不滿足才爲true
    println("數組中數字所有元素是否==0-numbers.none {  it == 0}:${numbers.none { it == 0 }}")
    println("**********************************************數組計算****************************************************")
    println("數組中數字所有元素總和numbers.sum():${numbers.sum()}")
    println("數組中數字每個元素+100_000總和numbers.sum{0_000 + it}:${numbers.sumBy { 10_000 + it }}")
    println("數組中數字平均值numbers.average():${numbers.average()}")
    println("**********************************************數組集成****************************************************")
    /**
     * s1 代表其中一個元素
     * s2 代表其中一個元素的下一個元素
     * 有點跟joinToString()想死
     * reduce  加前綴 reduceRight 加後綴
     * fold   加前綴額reduce foldRight 加後綴的reduceRight
     */
    println("把所有元素集成爲一個值nollStations.reduce{ s1, s2 -> s1 + \",\" + s2 }:${nollStations.reduce{ s1, s2 -> s1 + "," + s2 }}")
    println("把所有元素集成爲一個值,從又開始算nollStations.reduceRight{ s1, s2 -> s1 + \",\" + s2 }:${nollStations.reduceRight{ s1, s2 -> s1 + "," + s2 }}")
    println("把所有元素集成爲一個值,從又開始算nollStations.fold(\"fold:\"){ s1, s2 -> s1 + \",\" + s2 }:${nollStations.fold("fold:"){ s1, s2 -> s1 + "-" + s2 }}")
    println("把所有元素集成爲一個值,從又開始算nollStations.fold(\"foldRight:\"){ s1, s2 -> s1 + \",\" + s2 }:${nollStations.foldRight("foldRight:"){ s1, s2 -> s1 + "-" + s2 }}")
    println("**********************************************數組類型****************************************************")
    val numbers2 = arrayOf(1,23,5,89,-5,8,-78)
    val newStations = arrayOf("七星崗","小什字","解放碑","石橋鋪")

    val twoNumbers = numbers.plus(numbers2)
    val twoStations = nollStations.plus(newStations)

    println(twoNumbers.joinToString())
    println(twoStations.joinToString())

    //使用+運算符,和plus方法完全同階
    println((nollStations+newStations).joinToString())
    println((numbers+numbers2).joinToString())
    //zip配對
    println((numbers+numbers2).zip(nollStations+newStations))
    //zip配對 加強版
    println((numbers+numbers2).zip((nollStations+newStations)){s1, s2 -> "$s1" + ":" + s2 })
}


輸出結果:

元素個數nollStations.size:18或者元素個數nollStations.count():18
第1個nollStations.first():江北機場
第1個nollStations.component1():江北機場
第2個nollStations.component2():兩路
第3個nollStations.component3():
第4個nollStations.component4():
第5個nollStations.component5():金童路
最後1個ollStations.last():魚洞
其他元素的取出nollStations[x]:牛角沱
檢查是否包含某個元素nollStations.contains():true
查找元素nollStations.find { it.contains() }:四公里
查找最後一個匹配元素nollStations.findLast { it.contains() }:九公里
輸出一個元素逗號分割形式的字符串nollStations.joinToString():江北機場, 兩路, , , 金童路, 重慶北站南廣場, 龍頭寺, 獅子坪, 紅旗河溝, 觀音橋, 牛角沱, 兩路口, 工毛, 銅元局, 南平, 四公里, 九公里, 魚洞
輸出一個元素逗號分割形式的字符串,末尾添加字符nollStations.joinToString{}:江北機場站, 兩路站, 站, 站, 金童路站, 重慶北站南廣場站, 龍頭寺站, 獅子坪站, 紅旗河溝站, 觀音橋站, 牛角沱站, 兩路口站, 工毛站, 銅元局站, 南平站, 四公里站, 九公里站, 魚洞站
輸出一個元素逗號分割形式的字符串,nollStations.joinToString() 版本增強函數:輕軌3號線:江北機場->兩路->->->...
丟棄前面x個元素丟棄nollStations.drop(x):[金童路, 重慶北站南廣場, 龍頭寺, 獅子坪, 紅旗河溝, 觀音橋, 牛角沱, 兩路口, 工毛, 銅元局, 南平, 四公里, 九公里, 魚洞]
丟棄前面不爲空的元素丟棄ollStations.dropWhile{}:[, , 金童路, 重慶北站南廣場, 龍頭寺, 獅子坪, 紅旗河溝, 觀音橋, 牛角沱, 兩路口, 工毛, 銅元局, 南平, 四公里, 九公里, 魚洞]
丟棄最後x個元素nollStations.dropLast(x):[江北機場, 兩路, , , 金童路, 重慶北站南廣場, 龍頭寺, 獅子坪]
丟棄最後不爲空的元素丟棄nollStations.dropLastWhile{}:[江北機場, 兩路, , ]
取出前面x個元素丟棄nollStations.take(x):[江北機場, 兩路, , ]
取出後面x個元素丟棄nollStations.takeLast(x):[南平, 四公里, 九公里, 魚洞]
切割數組--取出指定範圍內元素nollStations.sliceArray(2..5).joinToString():, , 金童路, 重慶北站南廣場
數組反轉1--將自身元素首尾順序顛倒nollStations.reversed().joinToString():魚洞, 九公里, 四公里, 南平, 銅元局, 工毛, 兩路口, 牛角沱, 觀音橋, 紅旗河溝, 獅子坪, 龍頭寺, 重慶北站南廣場, 金童路, , , 兩路, 江北機場
數組反轉2--將自身元素首尾順序顛倒nollStations.reversedArray().joinToString():魚洞, 九公里, 四公里, 南平, 銅元局, 工毛, 兩路口, 牛角沱, 觀音橋, 紅旗河溝, 獅子坪, 龍頭寺, 重慶北站南廣場, 金童路, , , 兩路, 江北機場
**********************************************數字型的數組排序****************************************************
數組排序-升序numbers.sorted().joinToString():-9, 0, 5, 10, 26, 34, 89
數組排序-降序numbers.sorted().joinToString():89, 34, 26, 10, 5, 0, -9
地鐵名按長度排序-升序nollStations.sortedBy{}:[, , 兩路, 工毛, 南平, 魚洞, 金童路, 龍頭寺, 獅子坪, 觀音橋, 牛角沱, 兩路口, 銅元局, 四公里, 九公里, 江北機場, 紅旗河溝, 重慶北站南廣場]
地鐵名按長度排序-升序nollStations.sortedBy{it.length}:[, , 兩路, 工毛, 南平, 魚洞, 金童路, 龍頭寺, 獅子坪, 觀音橋, 牛角沱, 兩路口, 銅元局, 四公里, 九公里, 江北機場, 紅旗河溝, 重慶北站南廣場]
地鐵名按長度排序-降序nollStations.sortedByDescending{}:[重慶北站南廣場, 江北機場, 紅旗河溝, 金童路, 龍頭寺, 獅子坪, 觀音橋, 牛角沱, 兩路口, 銅元局, 四公里, 九公里, 兩路, 工毛, 南平, 魚洞, , ]
地鐵名按長度排序-降序nollStations.sortedByDescending{it.length}:[重慶北站南廣場, 江北機場, 紅旗河溝, 金童路, 龍頭寺, 獅子坪, 觀音橋, 牛角沱, 兩路口, 銅元局, 四公里, 九公里, 兩路, 工毛, 南平, 魚洞, , ]
數字型數組轉換成字符串數組並加前綴numbers.map {}:[數字:0, 數字:-9, 數字:10, 數字:5, 數字:89, 數字:26, 數字:34]
數字型數組篩選numbers.filter{}:[0, 10, 26, 34]
數字型數組最大值numbers.max():89
數字型數組最小值{numbers.min():-9
地鐵名最長的一個元素nollStations.maxBy { s->s.length }:重慶北站南廣場
地鐵名最小的一個元素nollStations.minBy { s->s.length }:
地鐵名長度不同的元素nollStations.distinctBy { s->s.length }:[江北機場, 兩路, , 金童路, 重慶北站南廣場]
返回刪除重複元素的新數組nollStations.distinct():[江北機場, 兩路, , 金童路, 重慶北站南廣場, 龍頭寺, 獅子坪, 紅旗河溝, 觀音橋, 牛角沱, 兩路口, 工毛, 銅元局, 南平, 四公里, 九公里, 魚洞]
**********************************************數組判定****************************************************
數組中數字所有元素是否>0-numbers.all {  it > 0}:false
數組中數字有元素是否<0-numbers.any {  it< 0}:true
數組中數字所有元素是否==0-numbers.none {  it == 0}:false
**********************************************數組計算****************************************************
數組中數字所有元素總和numbers.sum():155
數組中數字每個元素+100_000總和numbers.sum{0_000 + it}:70155
數組中數字平均值numbers.average():22.142857142857142
**********************************************數組集成****************************************************
把所有元素集成爲一個值nollStations.reduce{ s1, s2 -> s1 + "," + s2 }:江北機場,兩路,,,金童路,重慶北站南廣場,龍頭寺,獅子坪,紅旗河溝,觀音橋,牛角沱,兩路口,工毛,銅元局,南平,四公里,九公里,魚洞
把所有元素集成爲一個值,從又開始算nollStations.reduceRight{ s1, s2 -> s1 + "," + s2 }:江北機場,兩路,,,金童路,重慶北站南廣場,龍頭寺,獅子坪,紅旗河溝,觀音橋,牛角沱,兩路口,工毛,銅元局,南平,四公里,九公里,魚洞
把所有元素集成爲一個值,從又開始算nollStations.fold("fold:"){ s1, s2 -> s1 + "," + s2 }:fold:-江北機場-兩路---金童路-重慶北站南廣場-龍頭寺-獅子坪-紅旗河溝-觀音橋-牛角沱-兩路口-工毛-銅元局-南平-四公里-九公里-魚洞
把所有元素集成爲一個值,從又開始算nollStations.fold("foldRight:"){ s1, s2 -> s1 + "," + s2 }:江北機場-兩路---金童路-重慶北站南廣場-龍頭寺-獅子坪-紅旗河溝-觀音橋-牛角沱-兩路口-工毛-銅元局-南平-四公里-九公里-魚洞-foldRight:
**********************************************數組類型****************************************************
0, -9, 10, 5, 89, 26, 34, 1, 23, 5, 89, -5, 8, -78
江北機場, 兩路, , , 金童路, 重慶北站南廣場, 龍頭寺, 獅子坪, 紅旗河溝, 觀音橋, 牛角沱, 兩路口, 工毛, 銅元局, 南平, 四公里, 九公里, 魚洞, 七星崗, 小什字, 解放碑, 石橋鋪
江北機場, 兩路, , , 金童路, 重慶北站南廣場, 龍頭寺, 獅子坪, 紅旗河溝, 觀音橋, 牛角沱, 兩路口, 工毛, 銅元局, 南平, 四公里, 九公里, 魚洞, 七星崗, 小什字, 解放碑, 石橋鋪
0, -9, 10, 5, 89, 26, 34, 1, 23, 5, 89, -5, 8, -78
[(0, 江北機場), (-9, 兩路), (10, ), (5, ), (89, 金童路), (26, 重慶北站南廣場), (34, 龍頭寺), (1, 獅子坪), (23, 紅旗河溝), (5, 觀音橋), (89, 牛角沱), (-5, 兩路口), (8, 工毛), (-78, 銅元局)]
[0:江北機場, -9:兩路, 10:, 5:, 89:金童路, 26:重慶北站南廣場, 34:龍頭寺, 1:獅子坪, 23:紅旗河溝, 5:觀音橋, 89:牛角沱, -5:兩路口, 8:工毛, -78:銅元局]

Process finished with exit code 0


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章