鱼C论坛

 找回密码
 立即注册
查看: 3046|回复: 0

[技术交流] kotlin基础之列表与集合

[复制链接]
发表于 2017-11-17 09:42:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        为了省事我把什么序列,数组,列表等都简称为列表了,什么hashmap,map,set都简称为集合了。其实无非都是储存数据用的,也没多大区别,就是集合是以键值对的形式,列表就是一组数。

  1. fun main(args: Array<String>) {
  2.     var list= listOf<Int>(1,2,3,4,5)
  3.     var array=IntArray(5){1}
  4.     println(list)
  5.     array.map { print(it) }

  6. }
复制代码

        以上为列表的两种表现形式,当然其他还有好多,比如arrayListOf,arrayOf,StringArray等等一大堆,我就不说了,都大同小异。这里我用了map遍历方法,这是专门遍历列表跟集合用的。输出结果为:
[1, 2, 3, 4, 5]
11111


  1. var set= setOf<String>("小甲鱼","小甲鱼","不二如是")
  2.     set.forEach { print(it) }
复制代码

        以上代码为集合的用法,集合不允许有重复的数据。这里我又用了一种forEach的遍历方法,也是跟map用法差不多。输出结果为:
小甲鱼不二如是

  1. var map= mapOf<String,Int>(Pair("a",1), Pair("b",2), Pair("c",3))
  2.     map.map { print(it.value) }
复制代码

        这是map集合,里面必须是键值对,结果为:
123

        还可以有另一种方式初始化map:
  1.     var fruit= mapOf<Int,String>(1 to "apple",2 to "banana",3 to "pear")
  2.     fruit.mapValues { print(it.key);print(it.value) }
复制代码

结果为:
1apple2banana3pear

       
        然后说一下怎么操作这些列表跟集合,代码如下:
  1. var myList=(0..100).toList().asSequence().map { it*it }.filter { it%2==0 }.toList()
  2.     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]

       
        还有一种创建序列的方法非常实用,如下:
  1. var c= generateSequence (0){ it+10 }
  2.     var list1=c.take(10).toList()
  3.     print(list1)
复制代码

        这就是从0开始一直往后迭代+10,这里我们只取前10个数,输出结果为:
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]


        不论是列表还是集合,我们刚才写的都是不可更改的,如果要更改,需要如下写法:
  1. var a:MutableList<String>?= arrayListOf("a")
  2.     a?.add(0,"b")
  3.     a?.add(1,"c")
  4.     println(a?.joinToString())
  5.     var b:List<Int>?= arrayListOf(1)
  6.     b?.toMutableList()
  7.     print(b)
复制代码

变量a是直接写的可以更改的列表类型,b是把它转化成了该类型。输出结果为:
b, c, a
[1]

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 17:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表