kotlin对比(kotlin与go)

http://www.itjxue.com  2023-02-22 20:28  来源:未知  点击次数: 

Swift 与 Kotlin 的简单对比(转)

Swift 的语法与 Kotlin 有很多相似之处,整理了一些 Swift 和 Kotlin 的对比,下面是一些例子,大家不妨来看看。可以说掌握了kotlin 再去看swift简直爽的不要不要的。学习成本大大降低。

转自:

[译] Kotlin Collections vs sequences ——集合与序列对比

?使用集合完成工作是十分常见的任务,kotlin标准库也提供了很多易用的工具集合。它提供了两种工作集合:饥饿型集合和懒惰型序列。继续阅读查看两者差别,应该如何使用、什么时候使用以及两者隐藏性能开销。

?饥饿型集合和懒惰型序列主要差别在于何时执行转换。

? Collections是饥饿的——每个操作都是在调用时执行,操作结果保存在一个新集合中。集合转换为内联函数。比如,查看map是如何实现地,我们可以看到它是一个内联函数,内部创建了一个新ArrayList:

?序列是懒惰型。它们有两种类型操作:中间操作和末端操作。中间操作不会被立即执行;它们只会被暂存。只有当末端操作被调用时,中间操作才会对连续对每一个元素触发,最终应用末端操作。中间操作会(比如 map、distinct、groupBy 等等)返回另一个序列,然而末端操作(比如 first、toList、count 等等)并不会。

?序列并不会保持持有对集合中items的引用。它们会基于原始集合迭代器被创建,持有对所有需要执行的中间操作的引用。

?和集合转换不同,序列的中间操作并不是内联函数——内联函数不能被保存而序列需要保存。查看中间操作是如何实现的,比如map,我们可以看见转换函数会被保存在序列实例中。

?末端操作,比如first,会迭代遍历序列元素,直到某个元素满足了判断表达式。

?如果我们探究序列比如TransformingSequence(在上面map中使用到了)如何实现,我们会发现在序列迭代器调用next时就会应用所存储的转换。

?无论你使用集合还是序列,kotlin标准库提供了两者的广泛操作,比如find,filter,groupBy和其他。

?我们有一个列表,里面有不同的形状。我们需要一个黄色的然后第一个是方形的形状。

?让我们看看每个操作是如何、何时应用到每一个集合或序列的。

?当我们使用没有中间操作集合的序列,之后items会一个个进行评估,map操作也只会对一部分输入执行。

?无论你使用collections或者sequences,总是需要注意转换顺序。在上述例子中,first并不需要在map之后执行,因为它不是map转换的结果。如果我们反转业务逻辑顺序,首先对collection调用first,如何转换结果,那么我们就只创建一个新对象 —— 黄色方块。当我们使用sequence —— 我们就避免创建两个新对象,当我们使用集合,我们就避免创建整个新list。

?因为末端操作可以提早结束处理,中间操作是懒惰的,在一些场景中,相比collection,sequence则可以帮助你避免不需要的工作。你要确保总是会检查转换顺序,还有在两者直接的依赖。

?集合操作使用内联函数,传递进lambda的字节码操作会被内联。sequence并不使用内联函数,因此,每次操作中都会创建新函数对象。

?另一方面,集合对每一个转换都创建新list,然而,sequence仅会保持对转换函数的引用。

?当在数据量小的集合中,有1-2个操作符,就不会有比较大的性能影响。但是如果在数据量较大的集合使用中间操作符,性能开销就会比较大;在这种场景下,则使用序列。

?不幸运地是,我没有找到任何banchmarking材料帮助我们更好的理解collection和sequence的性能差异。

?Collections是饥饿型的,而sequences是懒惰型的。这取决与你的数据量,选择最合适使用方案:集合 —— 小数据量 或者 序列 —— 大数据量 , 尤其主义转换顺序。

原文地址: Collections and sequences in Kotlin

MarcinMoskala的 kotlin 性能对比 Effictive Kotlin 性能对比

Kotlin-实现字符串比较

在程序开发当中,关于 字符串比较 肯定是少不了的。那么在Kotlin开发语言中的字符串比较是怎么样的呢?下面我就来通过例子来举例一下。

输出结果是:

Kotlin当中,我们可以通过 == 来比较两个字符串。

Kotlin的 == 与Java的 == 的对比在于:Java的 == 是比较字符串的内存地址,Kotlin的 == 与Java语言的equals方法相等。

输出结果:

上面学习的两个Demo代表中文与英文的字符串比较,希望对一起学习Kotlin的小伙伴们有帮助。

对比Go 语言,Kotlin 有什么优势和劣势

Kotlin的优势很明显,因为JVM是宇宙第一运行时

Kotlin的劣势也非常明显,就是基于宇宙第一运行时。JVM吃内存的问题这辈子感觉是没希望解决了

(责任编辑:IT教学网)

更多

推荐微信营销文章