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

Kotlin】集合操作 ② ( MutableList 可变列表集合 | 修改 MutableList 集合 mutator 函数 )

文章目录 一、MutableList 可变列表集合 二、修改 MutableList 集合 mutator 函数 1、添加元素运算符 += 和 删除元素运算符 -= 2、通过 Lambda 表达式筛选要删除元素...一、MutableList 可变列表集合 ---- 使用 listOf 函数 创建 List 集合 是 只读列表集合 ; 使用 mutableListOf 函数 创建 MutableList 集合...集合 mutator 函数 ---- 修改 MutableList 集合 函数 统称为 mutator 函数 ; 1、添加元素运算符 += 和 删除元素运算符 -= 运算符重载 : MutableList...集合 还有一些 运算符重载 , 添加元素运算符 += 和 删除元素运算符 -= ; 向 MutableList 集合 添加一些元素 , 可使用 += 运算符 : mutableList += "Jack..." 其效果等同于 mutableList.add("Jack") 从 MutableList 集合 删除一些元素 , 可使用 -= 运算符 : mutableList -= "Tom" 其效果等同于

72730

kotlin基础--List、Set、Map

上次我们学习了kotlin字符串操作、数字类型、标准库函数,接下来我们来学习集合,和其他变量类型一样,集合也分为可变和只读 一、List 1.List集合创建与元素获取 调用listOf函数创建集合,...我们可以通过和数组一样方式: "变量[下标]" 来获取元素,或者使用get函数获取 fun main() { //listOf创建List集合 var list = listOf("张三...: "is null") } kotlin还支持利用toList和toMutableList函数实现可变和只读列表转换 fun main() { //调用mutableListOf创建可变list....解构 之前我们提到过,kotlin允许在一个表达式给多个变量赋值 可以用"_"过滤不想要元素 fun main() { //调用mutableListOf创建可变list val...mutableList = mutableListOf("张三", "李四", "王五") val (a, _, c) = mutableList } 二、Set 1.Set创建与元素获取

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

Kotlin极简教程(1)数据类型

因为种种原因,谷歌把Android第一开发语言改成了Kotlin。虽然近来用Java编写Android是是非常便利。...但是经过多次更新后,Java在Android方面的用处肯定会比不上Kotlin,所以有必要学习一下Kotlin。...不需要分号结尾,声明变量时数据可以省略数据类型 注:用val关键词声明变量类似于Java中用final修饰了,声明时必须初始化 2、简单变量之间转换 toInt()、toLong...2.4、forEach遍历 //set为集合名称 set.forEach{ //在{}可以直接用it关键字调用set元素 } 注: //只有MutableSet有add()和remove...:MutableList = mutableListOf() //此时it.age含义就是:将humanList的人,按照年龄来升序排 humanList.sortBy{ it.age

1.1K20

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

Any 类似于 Java Object,它是所有非空类型超类型。但是 Any 不能保存 null 值,如果需要 null 作为变量一部分,则需要使用Any?。Any?...类型投影(Type projections) 在上一篇文章>,曾经介绍过 MutableList 是不变,可读可写,没有使用 in、out 修饰。...而使用 in 时,编译可以通过,因为该参数只能出现在方法入参。 此时,list2 和 list3 分别表示一个受限制 MutableList。在 Kotlin ,这种行为被称之为类型投影。...三.星号投影(Star-projections) 星号投影用来表明“不知道关于泛型实参任何信息”。 类似于 Java 无界类型通配符?, Kotlin 使用星号投影*。...范型是 Kotlin 高级特性,相对于 Java 范型,它拥有更多概念。 该系列相关文章: Kotlin 范型之协变、逆变 Kotlin 泛型之类型擦除

2.4K20

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

Map 集合 一、List 创建与元素获取 ---- Kotlin 集合分为两类 , 只读集合 和 可变集合 ; 调用 listOf 函数 , 可以 直接创建 List 集合 ; 通过 [] 下标可以...直接获取 List 集合元素 ; fun main() { val list = listOf("Tom", "Jerry") println("${list[0]}") } 上述代码执行结果...: Tom 二、安全获取集合元素 ---- 除了使用 [] 下标获取 List 集合元素外 , Kotlin 还提供了 安全获取集合元素 方法 : getOrElse 和 getOrNull 函数...") 从 MutableList 集合 删除一些元素 , 可使用 -= 运算符 : mutableList -= "Tom" 其效果等同于 mutableList.remove("Tom") 2、通过...Map 值 ---- 获取 Map 值 : 使用 取值运算符 [] 获取 Map 集合值 , 运算符传入 键 , 如果找不到 键 对应 值 , 返回 null ; 使用 Map#getValue

5K20

Kotlin如何安全访问lateinit变量实现

Kotlin设计之初就是不允许非null变量在声明期间不进行初始化,为了解决这个问题,Kotlin lateinit 允许我们先声明一个变量,然后在程序执行周期将来某个时候将其初始化,让编译检查时不会...所以我们在 Kotlin 1.2及更高版本上,经常使用基于反射API 快速检查lateinit属性是否已初始化。...) { mList.add("") } } 但如果我们在一个类中有一个lateinit属性,然后尝试在另一类检查它是被初始化,如下所示: class PreA{ lateinit var...){ } } } 会报错: Kotlin: Backing field of ‘var mList: MutableList<String ‘ is not accessible at...this point 因为该反射API限定,当然inner class 是被允许,具体设计细节参考官方 所以我们如有类似需求可以直接在目标类添加新方法来检查lateinit属性: class

1.7K10

Kotlin 扩展函数 与 JS prototypeKotlin 扩展函数 与 JS prototype

Kotlin 扩展函数 与 JS prototype Kotlin 扩展函数 Kotlin扩展函数功能使得我们可以为现有的类添加新函数,实现某一具体功能 。...扩展函数是静态解析,并未对原类添加函数或属性,对类本身没有任何影响。 扩展属性允许定义在类或者kotlin文件,不允许定义在函数。..., Kotlin能给一个类扩展新功能,无需继承该类,也不用任何设计模式(装饰模式等), Kotlin支持扩展函数和扩展属性!...为什么要使用扩展(动机): 在Java,有很多工具类java.util.Collections,使用很繁琐: // Java Collections.swap(list, Collections.binarySearch...prototype就是“一个给类对象添加方法方法”,使用prototype属性,可以给类动态地添加方法 语法 object.prototype.name=value 实例 在本例,我们将展示如何使用

1.6K20

利用Kotlin如何实现Android开发Parcelable详解

虽然名字是 MutableList ,但是实际上这只是 Kotlin 一个辅助类型,可以用 Tools – Kotlin – Show Kotlin Bytecode 查看它编译成 JVM 字节码之后样子...因此我们只需要在对应地方调用 Parcel 对 List 和 ArrayList 处理方法就可以了。...Parcelable 要求每个实现类都有这个 CREATOR 对象,并且它必须是非空、公有的、静态字段。在 Java 程序,对于每个类 CREATOR 有非常稳定实现。...{ return arrayOfNulls(size) } } 在 Kotlin ,使用命名 companion object 确实可以生成一个对应名字静态字段,并且它是公有的,会随着类加载而被创建...requires a Parcelable.Creator… 在Kotlin编写代码过程,需要用到parcelable来进行传值,按照以前写法,进行序列化: class PayTypeInfo :

3.1K20

Collections杂谈(一)

final对于Java开发者来说并不陌生,但也必然说不上"常用",可在Kotlin里其地位却上升为定义变量"关键词",这也说明"可变"与"不可变"概念已经深刻在Kotlin基因里了。...这里 ImmutableList可以强转为 MutableList并修改其中元素。 ?...Kotlin代码要实现100%兼容Java,则无论穿衣服是 MutableList还是 ImmutableList,卸下伪装后都只能是Java List。...你觉得堂堂JetBrains会没想到去实现一个真正Immutable Collections?那当然不可能了,毕竟Kotlin被寄予了厚望。...剩下自己去翻文档吧。 ? 真正Immutable 整个库并不复杂(因为还在开发),但也不简单,因为相比于"可变","不可变"要考虑地方更多,暂且抛开这点不谈,先来简单看看库用法。

81520

Kotlin实战【六】Kotlin中集合创建

kotlin集合 Kotlin集合分为两派:可变集合与不可变集合 ?...列表:List/MutableList; 集:Set/MutableSet; 映射:Map/MutableMap; 集:Collection/MutableCollection; 迭代器:Iterable...,而是一个普通函数 kotlin集合与Java中集合关系 接下来让我们看一下创建对象类型: println(list.javaClass) //class java.util.Arrays$ArrayList...为什么Kotlin没有自己专门集合类呢? 答: 因为使用标准java集合类可以更好和java交互。kotlin与java互调不用考虑集合类转换。...尽管如此Kotlin并没有止步,而是在此基础上增加了很多方法,获取列表最后一个元素,或者得到一个数字列表最大值: val strings = listOf("first",

1K20

第8章 泛型第8章 泛型

当我们从集合获取一个值时候,我们不能都使用Object类型,需要进行强制类型转换。而这个转换过程由于在添加元素时候没有作任何类型限制跟检查,所以容易出错。...在Java 我们可以为类、接口和方法分别定义泛型参数,在Kotlin也同样支持。本节我们分别介绍Kotlin泛型接口、泛型类和泛型函数。...: MutableList = mutableListOf(Apple(), Apple(), Apple()) 由于Kotlin泛型跟Java一样是非协变,下面的调用是编译不通过...extends Fruit> 是 MutableList 父类型。 Kotlin中使用 MutableList 来表示。 超类型下界限定符 ?...对应地在Kotlin并不存在MutableList::class, 而只有 MutableList::class 。

1.9K20

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

,我们发现集合在实战存在诸多不足,主要包括以下几点: 1、集合不允许修改内部元素值; 2、集合无法删除指定位置元素; 3、不能通过下标获取指定位置元素; 鉴于集合以上缺点难以克服,故而实际开发基本用不到集合...不要小看这个有序性,正因为队列建立了秩序规则,所以它比集合多提供了如下功能(注意凡是涉及到增删改,都必须由MutableList来完成): 1、队列get方法能够获取指定位置元素,也可直接通过下标获得该位置元素...2、MutableListadd方法每次都是把元素添加到队列末尾,也可指定添加位置; 3、MutableListset方法允许替换或者修改指定位置元素; 4、MutableListremoveAt...方法允许删除指定位置元素; 5、MutableList提供了sort系列方法用于给队列元素重新排序,其中sortBy方法表示按照升序排列,sortByDescending方法表示按照降序排列;下面是个给队列排序代码例子...next函数得到下一个元素,也需访问该元素key属性获取键名,访问该元素value属性获取值对象。

2.3K20

Kotlin学习笔记(七)-泛型

前言 这节我们说下Kotlin泛型。...其实Kotlin泛型和Java很相似。他们都是伪泛型,所谓伪泛型就是我们们是无法获取到泛型具体类型。以为Java存在类型擦除和转换。...本篇还是和反射一样,从实际代码编写角度,说下Kotlin泛型 逆变与协变 泛型逆变与协变其其在Java也有。简单概括来说就是实现了泛型协变,<?...Kotlin协变与逆变 泛型参数即可作为传入参数,也可以作为返回值,但被in和out关键字修饰后就不一样了 out 叫协变 只能作为返回值读取 不能写入和修改(Kotlinlist只有get方法...没有add) in 叫逆变 只能写入不能读取 只能作为参数传入 (KotlinComparable只能传入参数) 不变 既没有in也没有out就叫做不变 MutableList(相当于java

64120

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

:【读书笔记】《Kotlin in Action》学习笔记(上) 另外,关于我在 mobilehub 微信留言中免费获赠中文版《 Kotlin 实战》书籍留言我也贴上,当时我回答时候一方面想着能意外收获一本书...当然没有, Kotlin 提供了一个更加优雅解决方案,不信你看看下面的代码: fun copyDataVersion3(source: MutableList, destination...} 4、 Kotlin DSL 使用带有 object 参数中缀函数 我只想说,“厉害了,我 Kotlin 哥”!...Kotlin DSL 真的很好用,像大名鼎鼎 anko 库,使用 DSL 实现 Android Layout 非常给力啊,还有 SQL 数据库操作,另外用过一段时间 TornadoFX ,用 DSL..."kotlin".should(start).with("kot") 没错,但是他精髓你发现了没?精髓在于 start 妙用!

66730

你应该知道kotlin实用技巧

,直接调用setRoundRectBg即可,简单方便 reified使用 reified,kotlin泛型实化关键字,使抽象东西更加具体或真实。...Gson解析例子 我们首先看下一般我们使用gson解析json是怎么做 在Java序列化库(Gson),当您想要反序列化该JSON字符串时,您最终必须将Class对象作为参数传递,以便Gson...称之为 SAM Type ),在 Kotlin 可以直接用 Lambda 来表示 —— 当然前提是 Lambda 所表示函数类型能够跟接口中方法相匹配。...由于新类继承了具体 ArrayList 类而不是实现 MutableList 接口,因此它与 ArrayList 实现高度耦合。...{ return deletedItem } } by 关键字告诉 KotlinMutableList 接口功能委托给一个名为 innerList 内部 ArrayList。

1.5K10
领券