1、List

获取元素的两种方式:
普通元素获取:list[0]
防崩溃方式获取:list.getOrElse()list.getOrNull()

fun main() {val list = listOf("jack",2,"jarry","")//普通方式println(list[0])println(list)println(list[3])//防崩溃方式println(list.getOrElse(1,{"我越界了"}))println(list.getOrElse(100,{"我越界了"}))//加上空合并操作符println(list.getOrNull(1) ?: "我越界了")println(list.getOrNull(100) ?: "我越界了")}

2、 list 可变集合和不可变集合的转换

可变集合:可以对集合中的元素进行添加或删除
不可变集合:不可以对集合中的元素进行修改或删除
不可变-----可变: list.toMutableList()
可变-----不可变:list2.toList()
集合类型的转换必须要用一个新的变量接收,要不则不能实现类型的转换

fun main() {//不可变集合val list = listOf("jack",2,"jarry","")println(list)//可变集合val list2 = mutableListOf("jack","1","jarry","tom")list2.add("maria")list2.remove("1")println(list2)//可变集合变成不可变集合list2.toList() //单单用这个方法不可以变成不可变集合list2.add("jlfdjaksf")val list3 = list2.toList()//得用一个新的变量来接收list2的改变才可以println(list2)//不可变集合变成可变集合val list4 = list.toMutableList()list4.add("jjjjj")list4.remove(2);println(list4)
}

3、mutator函数的理解

+= 代表.add()
-= 代表.remove()
removeIf() :按条件筛选删除

fun main() {//可以用+= 代表.add()//用-= 代表.remove()val list = mutableListOf(123, 234, 345, 4556, 567, 789)list += 110list -= 123println(list)//removeIf()  //按条件筛选删除
//    list.removeIf { true }// 如果是true就删除集合中所有元素list.removeIf { it <300 } //这里的it是list中的每个元素println(list)
}

4、最常用的集合遍历方式

1、for循环遍历
2、forEach方式遍历
3、forEachIndexed()

fun main() {val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9)//这只是输出不是遍历println(list)//for循环遍历for (i in list){print("元素:$i  ")}println()//forEach方式遍历list.forEach{print("元素:$it  ")}println()//list.forEachIndexed()list.forEachIndexed { index, i ->print("元素是:$index,下标是:$i  ")}
}

5、语法过滤元素 “_”

用_下划线内部可以不接受赋值,可以节约一点性能

fun main() {val list = listOf("李小龙", "叶问", "霍元甲")val(value1,value2,value3) = listprintln("value1:$value1 value2:$value2 value3:$value3 ")var (v1,v2,v3) = listv1 = "陈真"println("v1:$v1 v2:$v2 v3:$v3")//用_下划线内部可以不接受赋值,可以节约一点性能val(_,vl3) = list;println(" vl3:$vl3")}

6、set集合的创建和元素获取

集合的创建: setOf("jack", "lusi", "lisi", "wangwu")
元素的获取:setList.elementAt(0)
无报错获取:println(setList.elementAtOrElse(100){"越界了"} )
println(setList.elementAtOrNull(100) ?: "越界了啊")
空合并操作符: ?:,,返货null值的函数一般和空合并操作符一起使用比较好

fun main() {val setList = setOf("jack", "lusi", "lisi", "wangwu")println(setList)//setList.elementAt(0) 和 list[0] 一模一样println("第几个元素:${setList.elementAt(0)}")println("第几个元素:${setList.elementAt(2)}")println()//使用set 和list 集合时尽量都使用这种方式,防止下标越界println(setList.elementAtOrElse(0){"越界了"} )println(setList.elementAtOrElse(100){"越界了"} )println(setList.elementAtOrNull(0) ?: "越界了")println(setList.elementAtOrNull(100) ?: "越界了啊")
}

7、快捷函数于集合转换

快捷函数去重;list转set也可以去重
println(list.distinct())// 内部做了 ,先变成可变的set集合,
println(list.toMutableSet().toSet())//

fun main() {val list = mutableListOf("Tom", "Jack", "marry", "marry", "lucy")println(list)//list转set去重val toSet = list.toSet()println(toSet)//list转set再转set也能去重val toList = list.toSet().toList()println(toList)//快捷函数去重println(list.distinct())// 内部做了 ,先变成可变的set集合,println(list.toMutableSet().toSet())//                                                                                                                                                                                                                                                          和上面代码一样}

8、数组类型

kotlin语言中的各种数组类型是引用类型,背后可以变异成java的基本数据类型
IntArray ----------> inArrayOf
DoubleArray ----------> DoubleArrayOf
LongArray ----------> LongArrayOf
ShortArray ----------> ShortArrayOf
ByteArray ----------> ByteArrayOf
FloatArray ----------> FloatArrayOf
BooleanArray ----------> BooleanArrayOf
Array ----------> ArrayOf -------------------------->对象数组

和集合一样,数组也有防止空指针,数组下标越界的函数判断

1、intArrayOf ---------》常规操作会出现数组越界
2、elementAtOrElse ------- elementAtOrNull ----------》防止出现数组越界和空指针

9、Map 集合

(1)创建:
mapOf("a" to 1, "b" to 2, "c" to 3, "d" to 4)
mapOf(Pair("a",1), Pair("b",2),Pair("c",3))

    val map1 = mapOf("a" to 1, "b" to 2, "c" to 3, "d" to 4)val map2 = mapOf(Pair("a",1), Pair("b",2),Pair("c",3))println(map1)println(map2)

(2)取值:
读取map的值的四种方式
1、map[0] 和 get(“key”) 两种范式完全等价
2、getOrDefault
3、getOrElse
4、getValue 会出现崩溃

fun main() {//读取map的值的四种方式
//    1、map[0] 和 get("key")   两种范式完全等价
//    2、getOrDefault
//    3、getOrElse
//    4、getValue      会出现崩溃/*** 第一种:*/println(map1["a"])println(map1["e"])
//    等价于:println(map1.get("a"))println(map1.get("e"))/*** 第二种*/println(map1.getOrDefault("a",-1))println(map1.getOrDefault("e",-1))/*** 第三种*/println(map1.getOrElse("a") {-1})println(map1.getOrElse("e") {-1})/*** 第四种*/println(map1.getValue("a"))println(map1.getValue("e"))}

四种遍历方式:

//    四种遍历方式://第一种:map.forEach {println("k:${it.key} v:${it.value}")}println();println();println()//第二种:map.forEach{ key:String ,value : Int  ->println("k:$key v:${value}")}println();println();println()//第三种:map.forEach { (k, v) ->println("k:$k v:$v")}println();println();println()//第四种 for 循环for (item in map) {println("k:${item.key} v:${item.value}")}}

可变map集合: MutableMap
1、添加: += .put []
2、删除:-=
3、查看: getOrPut(没有的话就默认添加) getOrElse(防空) getOrDefault(防空)

 fun main() {val map = mutableMapOf<String, Int>(Pair("a", 123), "b" to 234, Pair("c", 345))println(map)//可变操作//添加  “+=”map+= Pair("d",456)map+= "c" to 789map+= "d" to (890)map.put("e",23423)//put 和  []   是等价的map["f"] = 123123
//    删除“-=”map-= "a"//    取值 防止空指针,下标越界//getOrPut    getOrElse   getOrDefaultmap.getOrDefault("a",444)println(map.getOrPut("b"){555})println(map.getOrPut("c"){999})println(map.getOrElse("c"){-1})println(map)
}

10、防范竟态条件

**防范竟态条件:**当你调用成员,这个成员可能为null,可能为空值,就必须采用防范静态条件,这个是KT编程的规范化

fun main() {var info : String ?  = null//防范竟态条件 : 当你调用成员,这个成员可能为null,可能为空值,就必须采用防范静态条件,这个是KT编程的规范化fun getShowInfo() : String {return info?.let {if (it.isBlank()) {"请检查代码,可能为空"}else{"最终的结果是:$it"}} ?: "info 是null  请检查代码"}println(getShowInfo())
}

Kotlin基本语法(四)-集合相关推荐

  1. Kotlin基本语法和使用

    Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发.与Java相比,Kotlin的语法更简洁.更具表达性,而且提供了更多的特性. Kotlin是使用Java开发者的思维被创 ...

  2. 代码实现sql编译器_【数据蒋堂】第 19 期:从 SQL 语法看集合化

    [数据蒋堂]第 19 期:从 SQL 语法看集合化 SQL 作为最常用的结构化数据计算语言,虽然在做一些细致处理时不太方便,但用于描述基本运算还是比 Java 等高级语言要简单许多.这是因为 SQL ...

  3. kotlin常用语法扫盲及开发注意点,勿错失(持续更新)

    kotlin常用语法扫盲及开发注意点,勿错失(持续更新) 文章目录 kotlin常用语法扫盲及开发注意点,勿错失(持续更新) 单句表达式 可以直接 用 = 省略 大括号 ::双冒号作用 map,lis ...

  4. Kotlin 特性 语法糖 优势 扩展 高阶 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. Kotlin基础语法(上)

    文章目录 Kotlin基础语法(下) Kotlin基础语法(上) 输出Hello world!!! 变量与输出 kotlin常见数据类型 变量的取值范围 kotlin函数 kotlin布尔类型 kot ...

  6. Kotlin实战指南四:区间

    转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87866868 本文出自[赵彦军的博客] Kotlin初体验四:区间 区间 实用函 ...

  7. Pocket英语语法---四、should的同义词是谁

    Pocket英语语法---四.should的同义词是谁 一.总结 一句话总结:should表示劝告,建议,命令,其同义词是ought to,should强调主观看法,ought to强调客观要求.在疑 ...

  8. 快速学习Kotlin(七)集合与操作符

    集合是我们在代码编写时常用的操作数据的方式之一,具有非常重要的作用. 在kotlin中也有集合的概念,kotlin中的集合一般有三种:List.Map以及Set三种.而这三种集合每种又可以分为可变集合 ...

  9. java文件的后缀.kt_移动端Kotlin 基础语法.kt 为后缀

    Kotlin 基础语法 Kotlin 文件以 .kt 为后缀. 包声明 代码文件的开头一般为包的声明: package com.runoob.main import java.util.* fun t ...

  10. Kotlin(三) 语法糖

    在上篇函数中,我们知道了如何定义函数,那么现在定义个函数,取两个数中比较大的数: fun  getMaxNum(a : Int,b : Int)  : Int {       return max(a ...

最新文章

  1. 高斯混合模型(GaussianMixture Model, GMM)聚类、可视化最优协方差形式、通过TSNE进行结果可视化分析、抽取核心特征因子
  2. python语言表白源码-表白 - python代码库 - 云代码
  3. 【命令init3/5】centos7切换图像界面和dos界面
  4. js获取window窗口高度(页面滚动条可滚动高度) - 代码篇
  5. L2-007. 家庭房产
  6. ssis 列转换_SSIS中的术语提取转换
  7. 数组的合并和升序排列_每日“力扣”系列10 下一个排列
  8. 数据链路层点到点通讯和PPP协议
  9. 目标检测YOLO V5 C++版本
  10. 【经验之谈】掌握这13个PyTorch Trick,让你做实验行云流水~
  11. hadoop日常维护之问题解决01
  12. 深入探索C++对象模型(2)
  13. PMP搞心态,解读最新『三大领域』考试内容:(附上第7版教材)
  14. 多元统计分析假设检验
  15. Fiddler https最新抓包方法(Android 9.0)
  16. LiveVideoStackCon2021 北京站专访:从上云到创新,视频云的新技术、新场景
  17. Spring事务(Transaction)
  18. 同义词转换不再有效_中考英语丨初中英语句型转换大全
  19. 【附源码】计算机毕业设计SSM我的大学电子相册
  20. 高斯消去法的python实现

热门文章

  1. 校园网免认证登录连接软件
  2. 35岁+的大龄程序员:面对“中年危机”,这份书单或许能帮到你
  3. 计算机动画实践教学反思,动画的制作教学反思
  4. es6中标签模板实例中的tab函数的理解
  5. 牛鞭效应及其在ERP系统中的应用
  6. layui下拉图标,layui排行号选择器
  7. 什么是学生机云服务器,哪里可以找到学生机云服务器?
  8. 统计中的三种相关系数及Matlab实现
  9. 右脑发达学计算机好吗,让右脑发达的方法
  10. Hadoop简介之望见数据湖