|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为了省事我把什么序列,数组,列表等都简称为列表了,什么hashmap,map,set都简称为集合了。其实无非都是储存数据用的,也没多大区别,就是集合是以键值对的形式,列表就是一组数。
fun main(args: Array<String>) {
var list= listOf<Int>(1,2,3,4,5)
var array=IntArray(5){1}
println(list)
array.map { print(it) }
}
以上为列表的两种表现形式,当然其他还有好多,比如arrayListOf,arrayOf,StringArray等等一大堆,我就不说了,都大同小异。这里我用了map遍历方法,这是专门遍历列表跟集合用的。输出结果为:
var set= setOf<String>("小甲鱼","小甲鱼","不二如是")
set.forEach { print(it) }
以上代码为集合的用法,集合不允许有重复的数据。这里我又用了一种forEach的遍历方法,也是跟map用法差不多。输出结果为:
var map= mapOf<String,Int>(Pair("a",1), Pair("b",2), Pair("c",3))
map.map { print(it.value) }
这是map集合,里面必须是键值对,结果为:
还可以有另一种方式初始化map: var fruit= mapOf<Int,String>(1 to "apple",2 to "banana",3 to "pear")
fruit.mapValues { print(it.key);print(it.value) }
结果为:
然后说一下怎么操作这些列表跟集合,代码如下:var myList=(0..100).toList().asSequence().map { it*it }.filter { it%2==0 }.toList()
print(myList)
这就是链式编程 ,这句话的步骤:我们先创建个列表然后给他转换为序列,这样处理起来效率会高,速度快,在用map处理一下让每个元素都平方,然后再过滤出能被2整除的数,最后再转化成一个列表。输出结果:
[0, 4, 16, 36, 64, 100, 144, 196, 256, 324, 400, 484, 576, 676, 784, 900, 1024, 1156, 1296, 1444, 1600, 1764, 1936, 2116, 2304, 2500, 2704, 2916, 3136, 3364, 3600, 3844, 4096, 4356, 4624, 4900, 5184, 5476, 5776, 6084, 6400, 6724, 7056, 7396, 7744, 8100, 8464, 8836, 9216, 9604, 10000]
还有一种创建序列的方法非常实用,如下:var c= generateSequence (0){ it+10 }
var list1=c.take(10).toList()
print(list1)
这就是从0开始一直往后迭代+10,这里我们只取前10个数,输出结果为:
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
不论是列表还是集合,我们刚才写的都是不可更改的,如果要更改,需要如下写法:var a:MutableList<String>?= arrayListOf("a")
a?.add(0,"b")
a?.add(1,"c")
println(a?.joinToString())
var b:List<Int>?= arrayListOf(1)
b?.toMutableList()
print(b)
变量a是直接写的可以更改的列表类型,b是把它转化成了该类型。输出结果为:
|
|