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

Collections杂谈(一)

这里 ImmutableList可以强转为 MutableList并修改其中元素。 ?...Kotlin代码要实现100%兼容Java,则无论穿衣服是 MutableList还是 ImmutableList,卸下伪装后都只能是Java List。...剩下自己去翻文档吧。 ? 真正Immutable 整个库并不复杂(因为还在开发),但也不简单,因为相比于"可变","不可变"要考虑地方更多,暂且抛开这点不谈,先来简单看看库用法。...因此库里A组方式都应该无视掉… ? PersistentList连元素都不能变了!可…除了加法运算…肯定还支持减法运算。难道只是数组内元素不可变,但数组本身是可变?...共享数据 在翻看源码实现时候,发现了一个比较奇怪地方,那就是其数据保存方式。下面同样 PersistentVector为例。 直接上图: ?

80220

kotlin基础--List、Set、Map

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

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

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

因为种种原因,谷歌把Android第一开发语言改成了Kotlin。虽然近来用Java编写Android是是非常便利。...var 变量名:变量类型 = 变量值 //声明Int类型变量num,赋值10 var num : Int = 10 ps:kotlin不需要分号结尾,声明变量时数据可以省略数据类型 注:用val关键词声明变量类似于...//从start截取,到end前一个结束 str.substring(start, end) //regx为界限切割成数组 str.split(regx) 四、容器 1、容器基本操作...3.1、基本方法 //定义一个队列 var list:MutableList = mutableListOf(); //添加元素元素添加到对尾...:MutableList = mutableListOf() //此时it.age含义就是:humanList的人,按照年龄来升序排 humanList.sortBy{ it.age

1K20

如何在 C# 编程方式 CSV 转为 Excel XLSX 文件

在本文中,小编将为大家介绍如何在Java编程方式【比特币-美元】市场数据CSV文件转化为XLSX 文件。...创建项目 (1)使用 Visual Studio 2022,创建一个新项目 ( CTRL+SHIFT+N ) 并 在下拉列表 选择 C#、 所有平台和 WebAPI ,快速找到项目类型ASP.NET...WeatherForecastController.cs 文件重命名为 BTCChartController.cs ,当更改文件名时, Visual Studio 提示您并询问您是否还要更改项目中所有代码引用...这会: HttpGet属性 Name更新 为 GetBTC-USDChartWorkbook, 返回类型更改为 FileContentResult, 注释掉与天气预报相关代码 添加调用GetCsvData...vnd.openxmlformats-officedocument.spreadsheetml.sheet", "BTC_Chart.xlsx"); } } // Get() 运行结果如下所示: 总结 以上就是在C# 编程方式

11810

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

三种循环遍历用法说明如下: 1、for-in循环 与Java类似,通过for语句加上in条件,即可轻轻松松依次取出集合所有元素。...,它自身并非具体元素,而是指向元素存放地址,所以迭代器循环其实是遍历所有元素地址。...为了代码精简做到极致,Kotlin给容器创造了forEach方法,明确指定该方法就是要依次遍历容器。...,我们发现集合在实战存在诸多不足,主要包括以下几点: 1、集合不允许修改内部元素值; 2、集合无法删除指定位置元素; 3、不能通过下标获取指定位置元素; 鉴于集合以上缺点难以克服,故而实际开发基本用不到集合...但是由于映射元素是个键值对,因此它循环遍历方式与集合稍有不同,详述如下: 1、for-in循环 for-in语句取出来是映射键值对元素,若要获取该元素键名,还需访问元素key属性;若要获取该元素值对象

2.2K20

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

有任何问题,欢迎随时与我交流~ ---- 本章介绍Kotlin标准库集合类,我们将了解到它是如何扩展Java集合库,使得写代码更加简单容易。...(1)列表 列表主要特征是其对象线性方式存储,没有特定顺序,只有一个开头和一个结尾,当然,它与根本没有顺序集是不同。 列表在数据结构可表现为:数组和向量、链表、堆栈、队列等。...5.3.7 映射操作符 map(transform: (T) -> R): List 集合元素通过转换函数transform映射后结果,存到一个集合返回。...c2, c3] 从代码运行结果我们可以看出,使用 map 是把list每一个元素都映射成一个List-n,然后这些List-n为元素,组成一个大嵌套List返回。...() [a1, a2, a3, b1, b2, b3, c1, c2, c3] 5.3.8 分组操作符 groupBy(keySelector: (T) -> K): Map> 集合元素按照条件选择器

2.6K20

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

五、修改 MutableList 集合 mutator 函数 1、添加元素运算符 += 和 删除元素运算符 -= 2、通过 Lambda 表达式筛选要删除元素 六、List 集合遍历 七、List...Map 集合 一、List 创建与元素获取 ---- Kotlin 集合分为两类 , 只读集合 和 可变集合 ; 调用 listOf 函数 , 可以 直接创建 List 集合 ; 通过 [] 下标可以...集合 函数 统称为 mutator 函数 ; 1、添加元素运算符 += 和 删除元素运算符 -= 运算符重载 : MutableList 集合 还有一些 运算符重载 , 添加元素运算符 += 和...删除元素运算符 -= ; 向 MutableList 集合 添加一些元素 , 可使用 += 运算符 : mutableList += "Jack" 其效果等同于 mutableList.add("Jack...") } 执行结果 : name1 = Tom name3 = Jack 八、Set 集合 ---- List 集合元素是 可以重复 , Set 集合元素 不可重复 ; 调用 setOf 函数

4.9K20

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

这就是面向对象范式混合函数式编程自由乐趣吧! 本章介绍Kotlin标准库集合类,我们将了解到它是如何扩展Java集合库,使得写代码更加简单容易。...集合类分类 List 列表 List 列表主要特征是其对象线性方式存储,没有特定顺序,只有一个开头和一个结尾。列表在数据结构可表现为:数组和向量、链表、堆栈、队列等。...Set 集 Set 集是最简单一种集合,它对象不按特定方式排序,只是简单把对象加入集合,就像往口袋里放一堆溜溜弹珠。 Set 集中没有重复对象。...在 Map 映射表 key(键)是唯一 MutableMap 支持添加和删除元素Map 7.2 不可变集合类 List 列表分为只读不可变 List 和 可变 MutableList (可写入删除数据...集合类持有的是对象,而怎样放入正确对象类型则是我们写代码过程需要注意。下一章节我们学习泛型。

1.2K20

第8章 泛型第8章 泛型

集合类可以说是我们在写代码过程中最最常用类之一。我们先来看下没有泛型之前,我们集合类是怎样持有对象。在Java,Object类是所有根类。...这种实现方式,存在问题有两个: 向集合添加对象元素时候,没有对元素类型进行检查,也就是说,我们往集合添加任意对象,编译器都不会报错。...现在,我们再看 popAll(Collection dst)方法,该方法Stack元素依次取出add到dst,如果不用通配符实现: // popAll method without wildcard...super T 8.6 类型擦除 Java和Kotlin 泛型实现,都是采用了运行时类型擦除方式。也就是说,在运行时,这些类型参数信息将会被擦除。 泛型是在编译器层次上实现。...对应地在Kotlin并不存在MutableList::class, 而只有 MutableList::class 。

1.9K20

Kotlin泛型型变之路

,然后,我们从list读取一个元素,这时候,这个元素返回类型是什么呢?...支持协变List 在Kotlin,有两种List,一种是可变,一种是不可变,即MutableList和List,其中List申明如下,它已经实现协变,所以KotlinList只能读而不能写...这是Kotlin特性,具体使用方式,上面的文章已经讲了一个例子。...其实,编译器还是留了一手,申明处泛型信息,实际上会Signature形式,保存到Class文件Constant pool,这样通过反射,就可以拿到具体泛型类型了。...❝另外,我们from签名改为List,也是可以编译,其原因就是KotlinList已经支持协变了。 ❞ 相信大家通过这个例子,大概能理解协变和逆变使用方式了。

1.2K21

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

虽然名字是 MutableList ,但是实际上这只是 Kotlin 一个辅助类型,可以用 Tools – Kotlin – Show Kotlin Bytecode 查看它编译成 JVM 字节码之后样子...一个扩展方法就好了 inline fun <reified T Parcel.readMutableList(): MutableList<T { @Suppress("UNCHECKED_CAST...假如上面的例子是用 Java 写,由于我们已经有了一个 Parcel 为参数构造方法,我们只需要这样实现 CREATOR 。...{ return arrayOfNulls(size) } } 在 Kotlin ,使用命名 companion object 确实可以生成一个对应名字静态字段,并且它是公有的,会随着类加载而被创建...requires a Parcelable.Creator… 在Kotlin编写代码过程,需要用到parcelable来进行传值,按照以前写法,进行序列化: class PayTypeInfo :

3.1K20

Kotlin Vocabulary | Kotlin 委托代理

为了实现这一目标,Kotlin 提供了一种大部分工作委托给一个内部 ArrayList 实例并且可以自定义其行为方式,并为此引入了一个新关键字: by。 让我们看看类代理工作原理。...{ return deletedItem } } 复制代码 by 关键字告诉 Kotlin MutableList 接口功能委托给一个名为 innerList 内部 ArrayList。...通过桥接到内部 ArrayList 对象方法方式,ListWithTrash 仍然支持 MutableList 接口中所有函数。与此同时,现在您可以添加自己行为了。...在装饰者模式,装饰者类与被装饰类使用同一接口。装饰者会持有一个目标类内部引用,并且包装 (或者装饰) 接口提供所有公共方法。 在您无法继承特定类型时,委托模式就显得十分有用。...简而言之,Kotlin 会生成和维护所有代理所需样板代码,换句话说,您可以工作放心地委托给 Kotlin

1.9K20

Kotlin for Java Developers 学习笔记

Kotlin 中会 Unit 形式返回 Kotlin 函数可以定义在任何地方:顶层、类成员、函数定义另一个函数 调用顶层函数相当于 Java static 函数 // MyFile.kt...} 常用集合操作 filter 只保留满足谓词条件元素 map 每一个元素按指定规则变换 any 判断列表是否有满足谓词条件元素 all 判断列表是否所有元素都满足谓词条件 find 找第一个满足谓词条件元素...,如果不存在则为 null,等价于谓词条件作为参数 first 或者 firstOrNull count 计算列表满足谓词条件元素个数 partition 按是否满足谓词条件,列表分裂为 2...,如果列表长度不同,则合并后元素个数是较短列表长度,其余部分将被忽略 flatten 嵌套列表展开 flatMap 是 map 和 flatten 组合 distinct 保留列表互不相同元素...[1, 2, 3, 4] 在底层,kotlin.List 有一个子类 kotlin.MutableList,而 kotlin.MutableList 会用 java.util.ArrayList 来实现

1.7K10

耗时半天,我用 Kotlin 实现了 helang 何语言

虽然这项功能仍是实验性质,但是这并不妨碍我们在 Kotlin 上正常使用,事实上,Kotlin 文档这篇文章就详细介绍了如何自定义你自己 Kotlin Script。...: Boolean { return list == other } } 这部分代码使得以下特性得以实现: 数组下标从 1 开始 当使用 0 作为下标时,u8 所有元素都将被赋值...多下标操作 在早期版本,我尝试直接使用一个 typealias(这很像 C++ define) u8 直接定义为一个 MutableList,但这样做会导致很多操作符无法被正确重载...Kotlin 并不支持通过 [element] 方式创建一个常规数组 —— 事实上,编译器会告诉你这种创建方式只能适用于注解参数。...,而实际上: 1 `|` 2 等价于: 1.`|`(2) 通过这种方式,我们可以使用 | 字符优雅创建 u8。

62320

Kotlin----数据类型详解

截取——substring() 替换——replace() 分割——split() 注意: Java split()返回是一个String[], 而 kotlin返回是一个 List (2)、...—— 是否非空 clear —— 清空容器 contains —— 是否包含指定元素 count —— 获取元素个数/ 也可以通过 size 获取 C: 容器初始化 kotlin容器可以在定义时候就执行初始化赋值操作...() while(iterator.hasNext()){ val user=iterator.next() ... } 迭代器存储并非真实元素,而是元素地址,类似于C指针。...removeAt可以删除指定索引位置元素 B: 遍历方式 除了 for-in 、迭代器、forEach, 还有一种根据索引遍历方式: // indices 表示userList索引数组。...这种方式本质上也是采用了for-in, 但遍历是索引 for(i in userList.indices){ val user=userList[i] ... } C: 排序 MutableList

75520

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

= sum(1,10,0.6) val result2 = sum(1,10,0.6,"kotlin") // compile error } Kotlin 默认上界是Any?...Any 类似于 Java Object,它是所有非空类型超类型。但是 Any 不能保存 null 值,如果需要 null 作为变量一部分,则需要使用Any?。Any?...类型投影(Type projections) 在上一篇文章>,曾经介绍过 MutableList 是不变,可读可写,没有使用 in、out 修饰。...而使用 in 时,编译可以通过,因为该参数只能出现在方法入参。 此时,list2 和 list3 分别表示一个受限制 MutableList。在 Kotlin ,这种行为被称之为类型投影。...*代指了所有类型,相当于Any?。 例如:MutableList 表示MutableList<out Any?

2.4K20
领券