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

JVMScalaKotlin

写在前面 在JVM生态下流行语言有好几种,最出名应该就是ScalaKotlin了。最近准备除了Java本身之外在学习一种JVM生态下语言,ScalaKotlin都是候选语言。...当然Kotlin最让我上心还是其“协程”特点,在Golang引入“协程”概念之后,我一直在尝试寻找基于JVM“协程”实现方式,大部分是基于第三方类库,但是这种在语言层面没有支持“协程”都是耍流氓,...根本用不起来,直到Kotlin这种JVM层次“协程”才算是真正有意义。...总感觉Java8似乎对于之前版本迭代不太满意,在Java8引入了一大堆新概念,但是很多让人挠头,Kotlin实现了Java8各种特效,并引入coroutines支持,实现更强大功能,语法具有表现力...Kotlin本身简洁语法,可以在代码对象设计角度节省很大代码量,相比之前Java冗余则清爽许多。 Scala实现则略感失望,实现起来似乎Java一样冗长。

2K20

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

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

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

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

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

1.2K20

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可变(所以,后面的几个特点是针对MutableSetMutableSet add...方法仅添加元素,但不知道添加到了哪个位置 MutableSet没有修改元素值方法,元素被添加之后不可被修改 MutableSet remove 方法仅接收元素作为参数,不能接收索引——因为Set无序没有索引

76720

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

与Java类似,Kotlin也拥有三类基本容器,分别是集合Set、队列List、映射Map,然后每类容器又分作只读与可变两种类型,这是为了判断该容器能否进行增删改等变更操作。...初始化赋值 : Kotlin允许在声明容器变量之时进行初始赋值,这点很方便比Java先进,当然不同容器初始化方法有所区别,具体对应关系见下表: 只读集合Set    setOf 可变集合    ...只读集合Set/可变集合MutableSet 集合是一种简单容器,它具有以下特性: 1、容器内部元素不按顺序排列,因此无法按照下标进行访问; 2、容器内部元素存在唯一性,通过哈希值校验是否存在相同元素...,如果存在则覆盖之; 因为Set是只读集合,初始化赋值后便不可更改,所以元素变更方法只适用于可变集合MutableSet,但MutableSet变更操作尚有以下限制: 1、MutableSet...方法内部依旧采用匿名函数形式,同时把元素keyvalue作为匿名函数输入参数。

2.3K20

【c++】mapset模拟实现

不断完善红黑树功能,最后封装模拟实现 目录 1.红黑树改造 由insert更改模版参数 setmapinsert函数: 2.红黑树迭代器 ++实现set迭代器: map迭代器 find...函数: 1.红黑树改造 在前面的学习中我们知道 setmap是基于红黑树实现,但是传参数不一样,如果硬要按上面的参数匹配,我们需要两个红黑树,我们前面实现红黑树都是pair实现,下面我们看库中实现方法...对于set,_data就是K,对于map,_data就是pair 用红黑树实现setmap,又要存储K,又要存储pair,通过上面实现set插入K,map插入pair,用第二个模版参数T 这里第一个模版参数并不多余...set是知道,函数内部构建仿函数取出K值,在这里加入第三个仿函数模版参数: template class RBTree { typedef...RBTreeNode Node; public: 这里用仿函数来取data中K值 setmapinsert函数: template class set { struct

4800

Kotlin学习日志(二)数据类型

基本数据类型名称 Kotlin数据类型 Java数据类型 整型 Int int Integer 长整型 Long long Long 浮点型 Float float Float 双精度...1.2变量转换 Kotlin中进行数据转换Java中不同,就不一一对比了,直接说Kotlin中如何进行数据类型转换,Kotlin中都是使用类型转换函数来进行数据类型转换,让我们来认识一下,如下表 Kotlin...,下标是从0开始),Kotlin也能通过方括号加下标来获取指定元素,不过Kotlin还有getset两个方法,通过get方法获取元素值,通过set方法修改元素值,我们演示一下,代码如下: 布局文件...字符串变量toCharArray方法 字符串变量toCharArray方法 可以看到Kotlin相对于Java转换要简单一些,通过方法即可实现。...因为Set是只读集合,初始化赋值后便不可更改,所以元素变更方法只适用于可变集合MutableSet,但MutableSet变更操作尚有以下限制 (1)MutableSetadd方法仅仅在集合中添加元素

3.3K20

js中setmap区别_listset

MapObject区别: 一个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.mapset都是stl中关联容器,map以键值对形式存储,key=value

3K20

使用注解自动生成代码

后来公司越做越大,小明从基础骨干晋升为部门 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

82100

AVL树红黑树(mapset底层实现

mapset底层结构 mapset其底层都是按照二叉搜索树来实现,但是二叉搜索树有其自身缺陷,假如往树中插入元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N),因此...map、set等关联式容器底层结构是对二叉树进行了平衡处理,即采用平衡树来实现。...红黑树AVL树都是高效平衡二叉树,增删改查时间复杂度都是O(log N),红黑树不追求绝对平衡,其只需保证最长路径不超过最短路径2倍,相对而言,降低了插入旋转次数,所以在经常进行增删结构中性能比...红黑树迭代器 迭代器好处是可以方便遍历,是数据结构底层实现与用户透明。...模拟实现 #include"RBTree.h" namespace fxl { template class set { typedef K ValueType;

1K10

什么年代了,还在用Arrays.asList()?

在Java 9中引入List.of、Map.ofSet.of等静态工厂方法为我们带来了全新集合创建方式,它们不仅简化了代码,还提供了不可变集合安全性性能优势。... mutableSet = new HashSet(); mutableSet.add("apple"); mutableSet.add("banana"); mutableSet.add...("orange"); 新旧技术对比 可变性 List.of、Map.ofSet.of方法创建集合对象是不可变,无法进行修改操作,确保了数据安全性线程安全性。...性能 新方式采用了高效数据结构来实现不可变集合,具有较好性能表现。 传统方式可能会涉及到数据拷贝、扩容等操作,性能相对较低。...结论 Java中List.of、Map.ofSet.of方法为开发人员提供了一种简洁、安全且高效方式来创建不可变集合对象。

10910

2020 年 JVM 生态报告:Kotlin 成为第二受欢迎 JVM 语言

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%。

56410
领券