写在前面 在JVM生态下流行的语言有好几种,最出名的应该就是Scala和Kotlin了。最近准备除了Java本身之外在学习一种JVM生态下的语言,Scala和Kotlin都是候选语言。...当然Kotlin最让我上心的还是其“协程”特点,在Golang引入“协程”概念之后,我一直在尝试寻找基于JVM的“协程”实现方式,大部分是基于第三方类库,但是这种在语言层面没有支持的“协程”都是耍流氓,...根本用不起来,直到Kotlin这种JVM层次的“协程”才算是真正的有意义。...总感觉Java8似乎对于之前版本的迭代不太满意,在Java8引入了一大堆的新概念,但是很多让人挠头,Kotlin实现了Java8的各种特效,并引入coroutines支持,实现更强大的功能,语法具有表现力...Kotlin本身简洁的语法,可以在代码对象设计角度节省很大的代码量,相比之前Java的冗余则清爽许多。 Scala的实现则略感失望,实现起来似乎和Java一样冗长。
mutator 函数 1、添加元素运算符 += 和 删除元素运算符 -= 2、通过 Lambda 表达式筛选要删除的元素 六、List 集合遍历 七、List 通过解构一次性给多个元素赋值 八、Set...---- Kotlin 中的集合分为两类 , 只读集合 和 可变集合 ; 调用 listOf 函数 , 可以 直接创建 List 集合 ; 通过 [] 下标可以 直接获取 List 集合中的元素 ;...* @param [action]函数,它接受元素的索引和元素本身 * 并对元素执行所需的操作。...集合 ---- List 集合中的元素是 可以重复 的 , Set 集合中的元素 不可重复 ; 调用 setOf 函数 , 可以创建 Set 集合 ; 调用 Set#elementAt 函数 , 可以...mutableSet += "Bill" mutableSet -= "Jerry" println(mutableSet) println(mutableSet.elementAt
Kotlin没有去重复造轮子(Scala则是自己实现了一套集合类框架),而是在Java 类库的基础上进行了改造和扩展,引入了不可变集合类,同时扩展了大量方便实用的功能,这些功能的API 都在 kotlin.collections...只读不可变 MutableSet 继承Set,支持添加和删除元素的Set Map 存储 K-V(键-值)对的集合。...List 集合类图.png Set 集也分为不可变 Set 和 可变 MutableSet(可写入删除数据) 。 Set 集合类图如下 ?...() [1, 2, 3] Kotlin的这个 sorted() 函数也是直接调用的 Java 的API 来实现的,相关代码如下 public fun > Iterable...更多可以参考官方API文档:http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/index.html 本章小结 本章我们介绍了Kotlin
介绍 同样在Kotlin中会有List、Map、Set,而与Java中数据结构大多相同,也略有区别。Kotlin中的集合分为可变集合与不可变集合。...var immutableList: List = listOf(1, 2) } } List的遍历 在Kotlin中的遍历和Groovy一样,都可以使用foreach...也就是我们也可以使用下面的方式来指定参数的名称。这也和Groovy一样。...创建以及遍历 与List创建差不多,Set的创建与遍历、过滤如下 class TestKotlin { fun function() { var mutableSet: MutableSet... = mutableSetOf(1, 2, 3) var immutableSet: Set = hashSetOf(1, 2, 3) mutableSet.forEach
1.1 编程语言简史 1.2 程序执行的三种方式 1.2.1 编译执行 1.2.2 解释执行 1.2.3 虚拟机执行 1.3 JVM概述 1.3.1 Java源代码编译执行过程 1.3.2...Java Class文件简介 1.3.3 JVM字节码执行过程 1.4 JVM语言家族 1.4.1 Scala 1.4.2 Groovy 1.4.3 Clojure 1.4.4 Kotlin...(数据结构) 7.2.6 类的行为(算法函数) 7.2.7 接口与抽象类 7.2.8 接口的默认实现 7.2.9 继承 7.2.10 实现接口 7.2.11 函数override重载 7.3...10.1.1.2 Set 10.1.1.3 Map 10.1.2 可变集合类 10.1.2.1 MutableList 10.1.2.2 MutableSet 10.1.2.3 MutableMap...Kotlin Script的模板引擎 第13章 使用Kotlin实现DSL 13.1 领域特定语言DSL 13.2 Groovy的DSL语法 13.3 Kotlin使用闭包构建 DSL 第14章 使用
不可变集合是 List、Set、Map,它们是只读类型,不能对集合进行修改。...可变集合是 MutableList、MutableSet、MutableMap,它们是支持读写的类型,能够对集合进行修改的操作。...Sequence 序列(Sequence)是 Kotlin 标准库提供的另一种容器类型。序列与集合有相同的函数 API,却采用不同的实现方式。...Sequence VS Stream Sequence 和 Stream 都使用的是惰性求值。...支持 跨平台 支持 Kotlin/JVM、Kotlin/JS、Kotlin/Native 等多平台 只能在 Kotlin/JVM 平台使用,并且 jvm 版本需要>=8 易用性 更简洁、支持更多的功能
因为种种原因,谷歌把Android的第一开发语言改成了Kotlin。虽然近来用Java编写Android是是非常便利的。...但是经过多次更新后,Java在Android方面的用处肯定会比不上Kotlin,所以有必要学习一下Kotlin。...1.1、三大容器 Set、List、Map(每类容器又分为只读和可变两种,前面三个为只读,添加Mutable为可变.../MutableSet 2.1、基本特性 Set为无序的,不能用下标访问...{ //在{}中可以直接用it关键字调用set的元素 } 注: //只有MutableSet有add()和remove()方法 //添加元素 set.add("zack") //删除元素
基本数据类型 Kotlin 中的基本数据类型包括数字、字符、布尔值和字符串。 数字类型 Kotlin 提供了多种数字类型,用于表示整数和浮点数。每种类型都有其特定的内存大小和范围。...字符串可以包括特殊字符和表达式的插值。 示例代码: val stringValue: String = "Hello, Kotlin!"...Set: 无序集合,不允许重复元素。 Map: 键值对的集合,每个键唯一。...: Set = setOf("A", "B", "C") val mutableSet: MutableSet = mutableSetOf("A", "B", "C")...通过熟悉这些数据类型和操作,您可以在 Kotlin 中更高效地处理各种数据和任务。在接下来的学习中,我们将继续探索 Kotlin 的其他特性和用法。
字符串模板和拼接 (3)、如何显示货币符号$ 4、容器 (1)、容器的基本操作 A: 分类: 分为可变和不可变,可变就是能执行增删改查操作的。...不可变的容器:Set、List、HashMap 可变的容器:MutableSet、MutableList、MutableHashMap B: 通用方法 isEmpty —— 是否为空 isNotEmpty...容器初始化的函数如下: listOf()、mutableListOf() setOf()、mutableSetOf() mapOf()、mutableMapOf() (2)、Set/MutableSet...A: 特点 内部元素无序 内部元素唯一(通过哈希值判断是否唯一,重复则覆盖) set不可变,MutableSet可变(所以,后面的几个特点是针对MutableSet的) MutableSet中的 add...方法仅添加元素,但不知道添加到了哪个位置 MutableSet没有修改元素值的方法,元素被添加之后不可被修改 MutableSet的 remove 方法仅接收元素作为参数,不能接收索引——因为Set无序没有索引
kotlin中的集合 Kotlin中的集合分为两派:可变集合与不可变集合 ?...列表:List/MutableList; 集:Set/MutableSet; 映射:Map/MutableMap; 集:Collection/MutableCollection; 迭代器:Iterable...public interface Set : Collection {...} public interface MutableSet : Set, MutableCollection...() //创建空的Set val set = setOf("123", "3212", "sadsa") //创建一个普通的Set val mutSet = mutableSetOf...为什么Kotlin没有自己专门的集合类呢? 答: 因为使用标准的java集合类可以更好的和java交互。kotlin与java互调不用考虑集合类的转换。
基于JVM的开源数据处理语言主要有Kotlin、Scala、SPL,下面对三者进行多方面的横向比较,从中找出开发效率最高的数据处理语言。...集合类型:Kotlin和Scala支持Set、List、Map。SPL支持序列(有序泛型集合,类似List)。...还有很多基本的集合运算是Kotlin不支持的,只能自行编码实现,包括:关联、窗口函数、排名、行转列、归并、二分查找等。...,不仅要用groupingBy和fold函数,还要辅以硬编码才能实现分组汇总。...SPL支持有序计算,可以直接按位置分组,按位置取字段,从集合中的集合取字段,虽然实现思路和Scala类似,但代码简短得多。
与Java类似,Kotlin也拥有三类基本的容器,分别是集合Set、队列List、映射Map,然后每类容器又分作只读与可变两种类型,这是为了判断该容器能否进行增删改等变更操作。...初始化赋值 : Kotlin允许在声明容器变量之时进行初始赋值,这点很方便比Java先进,当然不同容器的初始化方法有所区别,具体的对应关系见下表: 只读集合Set setOf 可变集合 ...只读集合Set/可变集合MutableSet 集合是一种简单的容器,它具有以下特性: 1、容器内部的元素不按顺序排列,因此无法按照下标进行访问; 2、容器内部的元素存在唯一性,通过哈希值校验是否存在相同的元素...,如果存在则覆盖之; 因为Set是只读集合,初始化赋值后便不可更改,所以元素变更的方法只适用于可变集合MutableSet,但MutableSet的变更操作尚有以下限制: 1、MutableSet的...方法内部依旧采用匿名函数的形式,同时把元素的key和value作为匿名函数的输入参数。
map 和 set 是 C++ 标准库中常用的关联式容器,均基于红黑树(自平衡二叉搜索树)实现 set(集合) 存储内容:仅存储单一键值(key),且键值唯一(不允许重复元素)。...红黑树的模拟实现 #ifndef RBTREE_H #define RBTREE_H #include #include // 红黑树节点颜色 enum...>data, z->data)) { x = x->right; } else { // 元素已存在,返回已存在的迭代器和...的模拟实现 #ifndef SET_H #define SET_H #include "rbtree.h" // set模板类 template 的唯一性和有序性 ma专注于通过键快速访问对应的值 两者均依赖红黑树实现,因此具备有序性和高效的平衡操作
不断完善红黑树功能,最后封装模拟实现 目录 1.红黑树的改造 由insert更改模版参数 set和map的insert函数: 2.红黑树的迭代器 ++的实现: set迭代器: map迭代器 find...函数: 1.红黑树的改造 在前面的学习中我们知道 set和map是基于红黑树实现的,但是传的参数不一样,如果硬要按上面的参数匹配,我们需要两个红黑树,我们前面实现的红黑树都是pair实现的,下面我们看库中的实现方法...对于set,_data就是K,对于map,_data就是pair 用红黑树实现set和map,又要存储K,又要存储pair,通过上面实现,set插入K,map插入pair,用第二个模版参数T 这里的第一个模版参数并不多余...和set是知道的,函数内部构建仿函数取出K的值,在这里加入第三个仿函数模版参数: template class RBTree { typedef...RBTreeNode Node; public: 这里用仿函数来取data中的K值 set和map的insert函数: template class set { struct
基本类型 Java type Kotlin type byte kotlin.Byte short kotlin.Short int kotlin.Int long kotlin.Long char kotlin.Char...float kotlin.Float double kotlin.Double boolean kotlin.Boolean 包装类 Java type Kotlin type java.lang.Byte...kotlin.Number java.lang.Throwable kotlin.Throwable List和Map Java type Kotlin read-only type Kotlin...Iterable MutableIterable (Mutable)Iterable Collection Collection MutableCollection (Mutable)Collection Set...Set MutableSet (Mutable)Set List List MutableList (Mutable)List ListIterator ListIterator MutableListIterator
基本数据类型名称 Kotlin的数据类型 Java的数据类型 整型 Int int 和 Integer 长整型 Long long 和 Long 浮点型 Float float 和 Float 双精度...1.2变量转换 Kotlin中进行数据转换和Java中不同,就不一一对比了,直接说Kotlin中如何进行数据类型转换,Kotlin中都是使用类型转换函数来进行数据类型转换的,让我们来认识一下,如下表 Kotlin...,下标是从0开始的),Kotlin也能通过方括号加下标来获取指定元素,不过Kotlin还有get和set两个方法,通过get方法获取元素值,通过set方法修改元素值,我们演示一下,代码如下: 布局文件...字符串变量的toCharArray方法 字符串变量的toCharArray方法 可以看到Kotlin相对于Java的转换要简单一些,通过方法即可实现。...因为Set是只读集合,初始化赋值后便不可更改,所以元素变更的方法只适用于可变集合MutableSet,但MutableSet的变更操作尚有以下限制 (1)MutableSet的add方法仅仅在集合中添加元素
本篇我们要用自己实现的红黑树去模拟实现map和set。 红黑树实现详解在:【C++】红黑树的实现详解 1....调整之前实现的红黑树的insert 1.1 整体框架的搭建 新建两个头文件,Mymap.h 和 Myset.h ,一个源文件 test.cpp ,然后把之前实现的红黑树拷贝一份过来。...然后我们用set的insert测试一下。 在Myset.h中加上insert的函数,在set类中public实现。...按道理来说, set和map的key都不允许修改 , map的value可修改,但是我们目前实现的迭代器,可以改动任意值,如下。...~RBTree() { Destroy(_root); _ root = nullptr; } map和set的主要实现就介绍到这里,还有别的接口可自行实现 ,我们下篇再见~
第10章 集合类与泛型 10.1 Kotlin集合类 10.1.1 不可变集合类 10.1.1.1 List 10.1.1.2 Set 10.1.1.3 Map 10.1.2 可变集合类 10.1.2.1...MutableList 10.1.2.2 MutableSet 10.1.2.3 MutableMap 10.2 泛型与类型安全 10.2.1 类型参数 10.2.2...类型推测 10.2.3 协变与逆变 10.3 类型上下界 ---- 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 ----
Map和Object的区别: 一个Object 的键只能是字符串或者 Symbols,但一个Map 的键可以是任意值。 Map中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。...Set Set 对象允许你存储任何类型的值,无论是原始值或者是对象引用。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成Set 数据结构。...由于Set结构没有键名,只有键值(**或者说键名和键值是同一个值**),所以keys方法和values方法的行为完全一致。...b.has(x))) // {1} 综上所述,主要有一下几个区别: 1.Map是键值对,Set是值的集合,当然键和值可以是任何的值; 2.Map可以通过get方法获取值,而set不能因为它只有值; 3....都能通过迭代器进行for…of遍历; 4.Set的值是唯一的可以做数组去重,Map由于没有格式限制,可以做数据存储 5.map和set都是stl中的关联容器,map以键值对的形式存储,key=value
后来公司越做越大,小明从基础骨干晋升为部门 Leader,为了提高工作效率,汽车品牌的实现交给 小白 负责,工厂的负责人分配给了 小黑 ,由于小白只负责汽车的实现,小黑只负责工厂的管理,所以常常出现一个问题...于是小明发明了一套基于 Annotation Processor 和编译时注解实现的自动生成工厂类代码的方案 首先自定义一个注解类 @CarAnnotation @Target(AnnotationTarget.CLASS...: MutableSet, roundEnvironment: RoundEnvironment ): Boolean { // 在这里实现逻辑...{ id 'kotlin-kapt' } // 或者 apply kapt 使用 JavaPoet or KotlinPoet 生成代码 JavaPoet 和 KotlinPoet 是一个生成...,反之不行,所以如果你是 Java 和 kotlin 混用的工程,使用 kapt 就可以了 2.注解处理器的 init 和 getSupportedAnnotationTypes 都执行了,但是 process