对比Java学Kotlin震惊!Kotlin 竟然废弃了循环遍历?!

Posted 陈蒙_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对比Java学Kotlin震惊!Kotlin 竟然废弃了循环遍历?!相关的知识,希望对你有一定的参考价值。

我们以最简单的循环10次为例,在 Kotlin 中有如下几种方式:

    for (i in 0..9)  println(i) 

    for (i in 0 until 10)  println(i) 

    repeat(10)  i -> println(i) 

    (0..9).forEach  i -> println(i) 

上面遍历步代码长是1,我们还可以更改步长为其他,比如2:

	for (i in 0..10 step 2)  println(i) 

但是,我们在 Kotlin 中更好的方式来取代循环遍历,虽然不能代替所有场景。
更好的方式就是集合的扩展,包括 filter、map 等,使用这些我们可以很方便的完成相关匹配、查找的功能,且不用写冗长的模板代码。

 val li = listOf("i", "love", "my", "wife")
 val st = listOf("with", "all", "myyy", "heart")

 // 查找单个元素,结果:my
 val found = li.find  it.length == 2 
 println(found)

 // 查找 li 中所有长度为2的字符串
 // 结果:["my"]
 val filter = li.filter  it.length == 2 
 println(filter)

 // 排序
 val sorted = li.sortedDescending()
 println(sorted)

 // 变形,对li中的每个元素做变形然后组成一个新的list
 // 结果:["I", "LOVE", "MY", "WIFE"]
 val transformer = li.map  it.toUpperCase() 
 println(transformer)

 // 合并,取出li和st中长度为4的元素形成2个集合,再把2个集合中对应的元素经过运算一个新的元素,返回这些元素组成的集合
 val merge =
     li.filter  it.length == 4 
         .zip(st.filter  it.length == 4 )  l, s -> l.plus("_").plus(s) 
 println(merge)

以上是关于对比Java学Kotlin震惊!Kotlin 竟然废弃了循环遍历?!的主要内容,如果未能解决你的问题,请参考以下文章

对比Java学Kotlin官方文档目录

对比Java学Kotlin单例模式

对比Java学Kotlin密封类

对比Java学Kotlin密封类

对比Java学Kotlin密封类

对比Java学Kotlin从 Java 中引用 Kotlin 类名自动带上 Kt 后缀