kotlin对比(kotlin与go)
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吃内存的问题这辈子感觉是没希望解决了