写在前面 在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中的集合分为两派:可变集合与不可变集合 ?...列表: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互调不用考虑集合类的转换。
字符串模板和拼接 (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无序没有索引
与Java类似,Kotlin也拥有三类基本的容器,分别是集合Set、队列List、映射Map,然后每类容器又分作只读与可变两种类型,这是为了判断该容器能否进行增删改等变更操作。...初始化赋值 : Kotlin允许在声明容器变量之时进行初始赋值,这点很方便比Java先进,当然不同容器的初始化方法有所区别,具体的对应关系见下表: 只读集合Set setOf 可变集合 ...只读集合Set/可变集合MutableSet 集合是一种简单的容器,它具有以下特性: 1、容器内部的元素不按顺序排列,因此无法按照下标进行访问; 2、容器内部的元素存在唯一性,通过哈希值校验是否存在相同的元素...,如果存在则覆盖之; 因为Set是只读集合,初始化赋值后便不可更改,所以元素变更的方法只适用于可变集合MutableSet,但MutableSet的变更操作尚有以下限制: 1、MutableSet的...方法内部依旧采用匿名函数的形式,同时把元素的key和value作为匿名函数的输入参数。
基于JVM的开源数据处理语言主要有Kotlin、Scala、SPL,下面对三者进行多方面的横向比较,从中找出开发效率最高的数据处理语言。...集合类型:Kotlin和Scala支持Set、List、Map。SPL支持序列(有序泛型集合,类似List)。...还有很多基本的集合运算是Kotlin不支持的,只能自行编码实现,包括:关联、窗口函数、排名、行转列、归并、二分查找等。...,不仅要用groupingBy和fold函数,还要辅以硬编码才能实现分组汇总。...SPL支持有序计算,可以直接按位置分组,按位置取字段,从集合中的集合取字段,虽然实现思路和Scala类似,但代码简短得多。
不断完善红黑树功能,最后封装模拟实现 目录 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方法仅仅在集合中添加元素
第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
map和set的底层结构 map和set其底层都是按照二叉搜索树来实现的,但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N),因此...map、set等关联式容器的底层结构是对二叉树进行了平衡处理,即采用平衡树来实现。...红黑树和AVL树都是高效的平衡二叉树,增删改查的时间复杂度都是O(log N),红黑树不追求绝对平衡,其只需保证最长路径不超过最短路径的2倍,相对而言,降低了插入和旋转的次数,所以在经常进行增删的结构中性能比...红黑树的迭代器 迭代器的好处是可以方便遍历,是数据结构的底层实现与用户透明。...的模拟实现 #include"RBTree.h" namespace fxl { template class set { typedef K ValueType;
在Java 9中引入的List.of、Map.of和Set.of等静态工厂方法为我们带来了全新的集合创建方式,它们不仅简化了代码,还提供了不可变集合的安全性和性能优势。... mutableSet = new HashSet(); mutableSet.add("apple"); mutableSet.add("banana"); mutableSet.add...("orange"); 新旧技术的对比 可变性 List.of、Map.of和Set.of方法创建的集合对象是不可变的,无法进行修改操作,确保了数据的安全性和线程安全性。...性能 新的方式采用了高效的数据结构来实现不可变集合,具有较好的性能表现。 传统方式可能会涉及到数据拷贝、扩容等操作,性能相对较低。...结论 Java中的List.of、Map.of和Set.of方法为开发人员提供了一种简洁、安全且高效的方式来创建不可变集合对象。
2020 年 JVM 生态报告已于近日发布,该报告由 Snyk 和 The Java Magazine(Oracle 的双月刊)联合推出,旨在了解 JDK 的实现、工具、平台和应用方面的前景。...Kotlin 超越 Scala 和 Clojure,成为 JVM 上第二大最受欢迎的语言 毋庸多说,大多数 JVM 用户(9/10)使用 Java 作为主要语言。...今年,Kotlin 大受欢迎,从去年的 2.4% 使用率增长到了 5.5%。 ?...目前,IntelliJ IDEA 是 JVM 社区中使用最广泛的 IDE,有 62% 的开发人员都在使用它。...对大量现成功能的支持以及对 Kotlin 的原生支持,促使 IntelliJ IDEA 越来越受欢迎。排在第二的 EclipseIDE 从去年的 38% 下降到今年的 20%。
领取专属 10元无门槛券
手把手带您无忧上云