一. list
1.1.可变集合与不可变集合

    //TODO:不可变集合 -- 没有add,remove等方法var list3 = listOf("iam")println(list3.get(0))println(list3[0])println(list3.getOrNull(1)?:"越界了")println(list3.getOrElse(1,{"越界了"}))//TODO:可变集合  -- 有add,remove等方法var list1 = mutableListOf("is your")list1.remove("is your")println(list1.getOrNull(0))//TODO:不可变集合to可变集合var list2 = list3.toMutableList()println(list2[0])//TODO:可变集合to不可变集合var list4 = list1.toList()list1.removeIf { true } //TODO:删掉符合条件的元素(此处相当于全部删了)println(list1)

运行结果:

1.2三种遍历手段

    /*** 遍历三种写法* @author Allen*/val list = listOf(1,2,3)for( i in list){print("$i ")}println()list.forEach {print("$it ")}println()list.forEachIndexed{index: Int, i: Int ->print("下标为$index 元素是$i  " )}println()


二. 解构写法

    /*** 解构写法*/var(num1,num2,num3) = list;println("num1 = $num1; num2 = $num2;  num3 = $num3")num1 = 4; //可变println("num1 = $num1; num2 = $num2;  num3 = $num3")val(n1,n2,n3) = list//只读, n1 = 4会报错var(_,a2,a3) = list //_表示不接收,可以优化性能println("num2 = $a2; num3 = $n3")

通过反编译可以看出,_表示不接受数据,反编译没有给予变量

三.Set
与list有可变和不可变

    /*** set集合 没有set[0]的写法, 存放无序不重复的元素*/var set = setOf(1,2,3) //TODO:不可变val set1 = mutableSetOf(1,2,3) //TODO:可变set1.add(4)println(set.elementAt(0))println(set1.elementAtOrNull(1))println(set1.elementAtOrElse(1,{"越接了"}))set1 += 5;set1 += 4println(set1.elementAt(4))

四. list 与 set 互转达到去重效果


五. 数组类型
1.1

注意:arrayof<>()存放的是Array<对象类型>,是类对象类型


1.2 集合转数组

1.3 arrayof<>()

六. Map
1.1获取并初始化map对象的俩种方式

    val map1 = mapOf<String,String>("小郑" to("二十"),"Allen" to("二十一"))val map2 : Map<String,Int> = mapOf(Pair("小郑",20), Pair("Allen",21))

1.2获取值的五种方式

    //获取值方式第一种([]符重载,其实跟get()一样)//无数据返回null,不会奔溃println(map1["小郑"])println(map1["佚名"])//获取值方式第二种//无数据返回null,不会奔溃println(map1.get("小郑"))println(map1.get("佚名"))//获取值方式第三种,defaulValue参数不是lambda//无数据返回defaultValueprintln(map1.getOrDefault("小郑","没有相关数据"))println(map1.getOrDefault("佚名","没有相关数据"))//获取值方式第四种,defaultValue参数是lambda(lambda作为最后一个参数可以放在括号外)//无数据返回defaultValueprintln(map1.getOrElse("小郑"){"没有相关数据"})println(map1.getOrElse("Allen",{"没有相关数据"}))println(map1.getOrElse("佚名"){"没有相关数据"})//获取值方式第五种,无数据会奔溃println(map1.getValue("小郑"))println(map1.getValue("佚名"))


1.3 map从可变到不可变:

    var map3 = map1.toMutableMap()map3.put("晓坚","二十一")map3.remove("Allen")map3.replace("小郑","二十","二十三")println(map3)



1.4map的四种遍历

    //第一种map3.forEach {print("${it.key}=${it.value}  ")}println()//第二种map3.forEach{ Key,Value ->print("$Key=$Value  ")} //key和value应该是配对的,所以这里会花波浪线表示这么做没有错,但是不太好println()//第三种map3.forEach { (K,V) ->print("$K=$V  ")}println()//第四种for(item in map3){print("$item  ")}


其中第四种相当于

    //第四种for(item : Map.Entry<String,String> in map3){print("$item  ")}

但由于默认会推导并增加:Map.Entry<String,String>,所以可以不写

Kotlin学习(五)之----集合 + 数组类型 + 解构写法 list,set,map.....相关推荐

  1. ES6基础2(块级作用域、数组对象解构)-学习笔记

    文章目录 ES6基础2(块级作用域.数组对象解构)-学习笔记 块级作用域 数组解构 对象解构 字符串解构 函数的参数解构 ES6基础2(块级作用域.数组对象解构)-学习笔记 块级作用域 //let c ...

  2. ES6学习-数组的解构

    数组的解构 const arr = [100, 200, 300] //const [foo,bar,baz]=arr//[]中放的是我们所需要提取出来的变量名,内部就会对应分配数值 //consol ...

  3. JS进阶学习(作用域、函数进阶、解构赋值、原型链)

    文章目录 1.面相对象编程介绍 2.ES6中的类和对象 3.类的继承 ES6中的类和对象 三个注意点 作用域 局部作用域 全局作用域 作用域链 JS垃圾回收机制(GC) JS垃圾回收机制-算法说明 闭 ...

  4. JS基础之数组--概述、创建数组的几种方式、数组的特点、数组的常用方法、数组的解构赋值、数组高级API

    一.概述 描述:数组(array)是按照一定顺序排列的一组值,每个值都拥有自己的编号,编号从0开始.整个数组用方括号来表示. 语法:var arr=[item1,item2,item3-] 1.1 注 ...

  5. es6中数组的解构_ES6中的数组解构简介

    es6中数组的解构 by Kevwe Ochuko 通过Kevwe Ochuko Destructuring in JavaScript is a simplified method of extra ...

  6. ES6学习笔记03:变量的解构赋值

    ES6学习笔记03:变量的解构赋值 如果想从复杂数据结构(数组.对象)中获取某一个数据,可能需要大量的遍历操作才能完成.通过解构赋值,这一过程可以得到简化. 1.字符串的解构赋值 其实,Python也 ...

  7. ES6学习(二)—变量的解构赋值

    ES6学习(二)-变量的解构赋值 文章只列举了一部分 完整版请看阮一峰ES6入门教程 点我查看阮一峰ES6入门教程 一.数组的解构赋值 二.对象解构赋值 三.函数参数的解构赋值

  8. 【ES6】阮一峰ES6学习(一) let、const、解构赋值

    let 和 const 命令 1. let 概念:块级作用域. 不存在变量提升:在声明变量前使用该变量,会报错. 暂时性死区:形成了封闭作用域,在代码块内,使用let声明变量之前,该变量都是不可用的. ...

  9. ES6数组的解构赋值( 中)

    数组的解构赋值的用法有以下几情况要注意: 1.结构赋值可以嵌套的 数组的解构赋值的用法有以下几情况要注意:1.结构赋值可以嵌套的 var [ a,b,[ c1,c2 ] ] = [ 1,2,[ 3.1 ...

最新文章

  1. 机器学习:信用风险评估评分卡建模方法及原理
  2. T-SQL:流程控制 4,Case 语句
  3. Play 2.0 用户指南 - 使用JSON库 -- 针对Scala开发者
  4. 定位pure virtual method called问题
  5. java 不能使用foreach_为什么我不能在Java Enumeration上使用foreach?
  6. oracle 数据库备份
  7. 如何判断链表中存在环路
  8. Cron表达式的正则表达式
  9. 半导体明珠 ASML 是如何炼成的?
  10. asp.net IsPostBack属性
  11. 国科大学习资料--矩阵分析与应用(李保滨)--2015年期末考试试卷
  12. Matlab R2017a启动时初始化过程时间太长解决办法
  13. bat批处理与adb命令的配合
  14. python微信好友分析源代码_Python简单分析微信好友
  15. Android 暗黑模式适配
  16. 6个哄自己开心的小技巧
  17. 计算机课程收获ppt模板,大学计算机实验心得收获.ppt
  18. cmd中怎么进mysql
  19. 利用Python实现ARCGIS中栅格计算器的简单功能
  20. echarts 仪表盘 文字位置_echarts仪表盘相关配置

热门文章

  1. Linux命令行github,Linux命令行下使用GitHub
  2. Linux下操作Excel表格,xlsx表格
  3. 第七史诗无限显示服务器连接中,第七史诗神器满破是什么意思?神器满破攻略...
  4. 求职应聘面试常见问题回答技巧
  5. WIN10驱动程序的卸载与更新
  6. 如何判断外汇平台是否整个?MT4外汇投资靠谱吗?
  7. 使用Wake On Lan远程唤醒
  8. MATLAB仪表示数读书识别GUI设计
  9. 7.2_gd-sgd
  10. 计算机文化基础(高职高专版 第十一版)第一章答案