alltolove 发表于 2017-11-17 09:42:07

kotlin基础之列表与集合

        为了省事我把什么序列,数组,列表等都简称为列表了,什么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遍历方法,这是专门遍历列表跟集合用的。输出结果为:
11111

        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集合,里面必须是键值对,结果为:
123
        还可以有另一种方式初始化map:
    var fruit= mapOf<Int,String>(1 to "apple",2 to "banana",3 to "pear")
    fruit.mapValues { print(it.key);print(it.value) }
结果为:
1apple2banana3pear
       
        然后说一下怎么操作这些列表跟集合,代码如下:
var myList=(0..100).toList().asSequence().map { it*it }.filter { it%2==0 }.toList()
    print(myList)
        这就是链式编程{:5_91:} ,这句话的步骤:我们先创建个列表然后给他转换为序列,这样处理起来效率会高,速度快,在用map处理一下让每个元素都平方,然后再过滤出能被2整除的数,最后再转化成一个列表。输出结果:


       
        还有一种创建序列的方法非常实用,如下:
var c= generateSequence (0){ it+10 }
    var list1=c.take(10).toList()
    print(list1)
        这就是从0开始一直往后迭代+10,这里我们只取前10个数,输出结果为:


        不论是列表还是集合,我们刚才写的都是不可更改的,如果要更改,需要如下写法:
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是把它转化成了该类型。输出结果为:
b, c, a

页: [1]
查看完整版本: kotlin基础之列表与集合