首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

kotlin基础--List、Set、Map

上次我们学习了kotlin字符串操作、数字类型、标准库函数,接下来我们来学习集合,和其他变量类型一样,集合也分为可变和只读 一、List 1.List集合创建与元素获取 调用listOf函数创建集合,...: "is null") } kotlin还支持利用toList和toMutableList函数实现可变和只读列表转换 fun main() { //调用mutableListOf创建可变list...= list.toMutableList() } kotlin支持和c/c++一样运算符重载,所以我们可以用 +号 代替 add函数, - 号 代替 remove函数 fun main() {....解构 之前我们提到过,kotlin允许一个表达式中给多个变量赋值 可以用"_"过滤不想要元素 fun main() { //调用mutableListOf创建可变list val...val set = setOf("张三", "李四", "王五") println(set.elementAt(1)) } 2.可变Set 通过mutableSetOf创建,其他

61710

第7章 集合类第7章 集合类

Kotlin没有去重复造轮子(Scala则是自己实现了一套集合类框架),而是Java 类库基础上进行了改造和扩展,引入了不可变集合类,同时扩展了大量方便实用功能,这些功能API 都在 kotlin.collections...另外,Kotlin中集合类不仅仅能持有普通对象,而且能够持有函数类型变量。...Map 映射 Map 映射与Set 集或List 列表区别是:Map 映射中每个都是成对。... Map 映射表中 key(键)是唯一 MutableMap 支持添加和删除元素Map 7.2 不可变集合类 List 列表分为只读不可变 List 和 可变 MutableList (可写入删除数据...() 、mutableMapOf() 来创建可变 MutableList 列表、MutableSet 集、MutableMap 映射表。

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin---集合与遍历

介绍 同样Kotlin中会有List、Map、Set,而与Java中数据结构大多相同,也略有区别。Kotlin集合分为可变集合与不可变集合。...List及其遍历 KotlinList接口只提供了size、get、indexOf等接口。所以我们写代码之前需要先知道这个List使用时候会变还是不会变。...创建可变与不可变List Kotlin中都是通过标准库来创建集合类,例如: 创建可变List:通过mutableListOf(),返回MutableList对象 创建不可变List:通过listOf...// 创建List不能添加和删除只能遍历 var immutableList: List = listOf(1, 2) } } List遍历 Kotlin遍历和...var first = mutableList.first { it == 3 } } } Kotlin闭包中,可以使用很多方式来指定参数,如果没有指定参数的话

3.2K30

Kotlin 极简教程 》第5章 集合类(1)

Kotlin集合类分为:可变集合类(Mutable)与不可变集合类(Immutable)。 集合类型主要有3种:list(列表)、set(集)、和 map(映射)。...(1)列表 列表主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当然,它与根本没有顺序集是不同列表在数据结构中可表现为:数组和向量、链表、堆栈、队列等。...通过对集中对象迭代,我们可以得到一个升序对象集合。 (3)映射 映射与集或列表有明显区别,映射中每个都是成对。...class java.util.ArrayList 关于KotlinArrayList类型别名定义 kotlin/collections/TypeAliases.kt 文件中: @file:kotlin.jvm.JvmVersion...列表长度取两个集合中最短

2.7K20

Kotlin入门(23)适配器进阶表达

前面介绍列表视图和网格视图时,它们适配器代码都存在视图持有者ViewHolder,因为Android对列表类视图提供了回收机制,如果某些列表屏幕上看不到了,则系统会自动回收相应视图对象。...为方便理解循环适配器Kotlin编码,下面以微信公众号消息列表为例,给出对应消息列表Kotlin代码: //ViewHolder构造时初始化布局中控件对象 class RecyclerLinearAdapter...注意到适配器代码仍然通过findViewById方法获得控件对象,可是号称Anko库支持之下,Kotlin早就无需该方法就能直接访问控件对象了呀,为啥这里依旧靠老牛拉破车呢?...这么神奇魔法,快来看看Kotlin适配器代码是如何书写: //利用Kotlin插件LayoutContainer,适配器中直接使用控件对象,而无需对其进行显式声明 class RecyclerStaggeredAdapter...扩展插件,所以需要修改模块build.gradle,文件末尾添加下面几行配置,表示允许引用安卓插件库: androidExtensions {     experimental = true }

1.8K41

最强总结 | 带你快速搞定kotlin开发(中篇)

,会根据构造器中声明属性自动推断出equals方法,kotlin中equals方法等同于双等号“==”,而双等号Java中是比较引用(地址)是否相等,kotlin中需要使用三等号“===”。...如果 when 被用作表达式, 则必须有 else 分支, 除非编译器能够证明其他分支条件已经覆盖了所有可能情况 循环和lambda 假设有个User列表,然后找出年龄小于20岁部分: fun...(it) } } 其实我们还能简化,kotlin容器类提供过滤函数filter(),他会直接返回符合条件集合: val youngPersonList = users.filter...{ it.age < 20 } kotlin还提供了一个过滤函数partition,他可以返回两个集合,一个是满足条件,另一个是不满足条件: val (youngPersonList,...,比如我觉得MutableList应该具备可以任意交换数据函数,那我们就可以自己为MutableList类扩展一个这样函数,然后我们就可以在所有MutableList对象中使用这个函数:

65420

使用Kotlin做一个简单HTML构造器

fun doSomething(name: String, func: (e: String) -> Unit) { func(name) } Kotlinlambda表达式还有一特性,指定接收器...语法就是lambda表达式括号前添加接收器和点号.。指定了接收器lambda表达式内部,我们可以直接调用接收器对象上任意方法,不需要额外前缀。...这里属性和子标签都声明为了MutableList类型,它是Kotlin类库中可变列表,存储内容是可以修改。最后文本类非常简单,直接返回文本。...doInit工具方法中,子元素被添加到标签正是这里定义上下文。因为tr标签既可以thead标签中使用,也可以tbody标签中使用。...如果技术够硬的话,你甚至可以自己做一个脚本语言或者其他什么东西。当然现在已经有项目开始使用这种语法了,例如Kara Web框架视图以及用Kotlin写Gradle脚本。

61720

Collections杂谈(一)

final对于Java开发者来说并不陌生,但也必然说不上"常用",可在Kotlin里其地位却上升为定义变量"关键词",这也说明"可变"与"不可变"概念已经深刻在Kotlin基因里了。...因此Kotlin里,开发者最惦记Collections同样划分为"可变集合"(Mutable Collections)和"不可变集合"(Immutable Collections)。...Kotlin代码要实现100%兼容Java,则无论穿衣服是 MutableList还是 ImmutableList,卸下伪装后都只能是Java List。...共享数据 翻看源码实现时候,发现了一个比较奇怪地方,那就是其数据保存方式。下面同样以 PersistentVector为例。 直接上图: ?...,都将有一部分是共享,这将能节省不少内存,同时能让用户极小负担下对列表进行修改。

81320

Kotlin 范型之泛型约束、类型投影、星号投影

Kotlin 中使用:代替 extends 对泛型类型上界进行约束。...1.1 Upper bounds 下面的代码,调用 sum() 函数时,传入参数只能是 Number 及其子类,如果是其他类型,则会报错。...是 Any 超类型,所以 Kotlin 默认上界是Any? 1.2 where 关键字 当一个类型参数指定多个约束时, Java 中使用&连接多个类、接口。...类型投影(Type projections) 在上一篇文章>中,曾经介绍过 MutableList 是不变,可读可写,没有使用 in、out 修饰。...而使用 in 时,编译可以通过,因为该参数只能出现在方法入参。 此时,list2 和 list3 分别表示一个受限制 MutableList Kotlin 中,这种行为被称之为类型投影。

2.4K20

Kotlin for Java Developers 学习笔记

和 final ,如果需要不是 final 需要显式说明 open Java 中默认级别是 package-level,同一个包内其他类可见,这个 Kotlin 中叫做 internal override... Kotlin 中是强制,避免意外 override protected Java 中仍然对同一个包内其他类可见, Kotlin 中只对子类可见 private 针对类来说就是私有类,对于...top-level declaration 是对同一个文件中其他部分可见 internal JVM 层面 public + name mangled Java 中每一个类需要是单独类,而 Kotlin...,这样就可以自己算法中用新比较规则,这个规则在代码其他部分是不可见 内联函数 run 会运行一个 Lambda 代码段,并把最后一个表达式作为结果 let 可以检测一个参数是不是 nulll...[1, 2, 3, 4] 底层,kotlin.List 有一个子类 kotlin.MutableList,而 kotlin.MutableList 会用 java.util.ArrayList 来实现

1.8K10

Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )

可变列表集合 ---- 使用 listOf 函数 创建 List 集合 是 只读列表集合 ; 使用 mutableListOf 函数 创建 MutableList 集合 是 可变列表集合 ; 调用...MutableList#toList 函数 , 可以 将 可变列表集合 转为 只读列表集合 ; 调用 List#toMutableList 函数 , 可以 将 只读列表集合 转为 可变列表集合 ; 代码示例...("Jack") // 删除元素 mutableList.remove("Tom") println(mutableList) // 将 可变列表集合 转为 只读列表集合...val list: List = mutableList.toList() // 将 只读列表集合 转为 可变列表集合 val mutable: MutableList...(name in list) { println("for : $name") } forEach 遍历 : /** * 每个元素上执行给定[action]。

5K20

Kotlin 集合使用详细解析

Kotlin中,过滤条件由谓词定义,指接受一个集合元素并且返回布尔值 lambda 表达式:true说明给定元素与谓词匹配,false则表示不匹配。...13.1、添加元素 add() 要将单个元素添加到列表或集合,请使用 add() 函数。指定对象将添加到集合末尾。...参数集合第一个元素会被插入到这个位置。 其他元素将跟随它后面,将接收者元素移到末尾。...14.4.1、添加 要将元素添加到列表特定位置,请使用 add() 或 addAll() 并提供元素插入位置作为附加参数。 位置之后所有元素都将向右移动。...asReversed() 可变列表上调用会返回另一个可变列表,该列表是原始列表反向视图。该视图中更改将反映在原始列表中。

4K00

【读书笔记】《Kotlin in Action》学习笔记(下)

:【读书笔记】《Kotlin in Action》学习笔记(上) 另外,关于我 mobilehub 微信留言中免费获赠中文版《 Kotlin 实战》书籍留言我也贴上,当时我回答时候一方面想着能意外收获一本书...首先看原始版本,拷贝一个列表到另一个: fun copyDataVersion1(source: MutableList, destination: MutableList) {...当然没有, Kotlin 提供了一个更加优雅解决方案,不信你看看下面的代码: fun copyDataVersion3(source: MutableList, destination...} 4、 Kotlin 中 DSL 使用带有 object 参数中缀函数 我只想说,“厉害了,我 Kotlin 哥”!..."kotlin".should(start).with("kot") 没错,但是他精髓你发现了没?精髓在于 start 妙用!

66430

Kotlin | 6.Kotlin 类型系统

String类型,Kotlin中这表示它必须包含一个String实例) // strLen(null) // 如果允许调用这个方法时候传给它所有的可能实参,包括null...} // 只泛型类时候会被编译成Integer,如集合类,其他是int // 对应到Java基本数据类型类型完整列表如下: /* *...集合设计和Java不同另一重要特质是,它把访问集合数据接口和修改集合数据接口分开了。...Java 中类型 Kotlin 中被解释成平台类型,允许开发者把它们当作可空或非空来对待。 表示基本数字类型(如 Int )看起来用起来都像普通类,但通常会被编译成 Java 基本数据类型。...当你 Kotlin 中继承 Java 类或者实现 Java 接口时,你需要仔细考虑参数可空性和可变性。 KotlinArray 类就像普通泛型类 但它会被编译成 Java 数组。

2.3K10

Kotlin入门(16)容器遍历方式

Kotlin号称全面兼容Java,于是乎Java容器类仍可在Kotlin中正常使用,包括大家熟悉队列ArrayList、映射HashMap等等。...不过Kotlin作为一门全新语言,肯定还是要有自己容器类,不然哪天Java跟Kotlin划清界限,那麻烦就大了。...初始化赋值 : Kotlin允许声明容器变量之时进行初始赋值,这点很方便比Java先进,当然不同容器初始化方法有所区别,具体对应关系见下表: 只读集合Set    setOf 可变集合    ...只读队列List/可变队列MutableList 队列是一种元素之间按照顺序排列容器,它与集合最大区别,便是多了个次序管理。...2、MutableListadd方法每次都是把元素添加到队列末尾,也可指定添加位置; 3、MutableListset方法允许替换或者修改指定位置元素; 4、MutableListremoveAt

2.3K20

Android基于EasyPermission封装实现快速权限申请

buildFeatures { dataBinding true } } 同时插件中添加 kotlin-kapt插件,如下: plugins { id 'com.android.application...' id 'org.jetbrains.kotlin.android' // 添加 kotlin-kapt 插件 id 'kotlin-kapt' } 配置完成后,点击 Sync...BaseBindingActivity、BaseBindingViewModelActivity、BaseFragment、BaseBindingFragemnt、BaseBindingViewModelFragment 关于其他几个基类使用见...:Android基于DataBinding+Koin实现MVVM模式页面快速开发框架 2.3 申请失败处理 只需在请求时传入 onDenied回调即可进行权限申请失败处理,如下: // 要申请权限列表...,再次申请权限将不再弹出用户允许权限弹框,此时只能引导用户系统应用设置里手动开启应用相关权限,ardf也对该场景做了封装,只需申请时传入 showPermanentlyDeniedDialog

1.8K30

第8章 泛型第8章 泛型

集合类API中大量地使用了泛型。Java 中我们可以为类、接口和方法分别定义泛型参数,Kotlin中也同样支持。本节我们分别介绍Kotlin泛型接口、泛型类和泛型函数。...extends Fruit> 是 MutableList 父类型。 Kotlin中使用 MutableList 来表示。 超类型下界限定符 ?...Kotlin中使用 MutableList 来表示。 这里问号 (?) , 我们称之为类型通配符(Type Wildcard)。...JVM看到只是List,而由泛型附加类型信息对JVM来说是不可见。 关于泛型很多奇怪特性都与这个类型擦除存在有关,比如:泛型类并没有自己独有的Class类对象。...对应地Kotlin中并不存在MutableList::class, 而只有 MutableList::class 。

1.9K20
领券