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