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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值