Spring Boot2 系列教程(一)纯 Java 搭建 SSM 项目

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012702547/article/details/100418974

内容简介:前文介绍了数据类型相关的文章,本讲我们来聊聊 Kotlin 中的集合。


简介

Kotlin 完全兼容 Java 的集合,且 Kotlin 有专有的集合:可变集合&不可变集合(本质还是 Java 的集合,后面讲到的类的映射大家就明白啦)。

不可变集合:集合在创建的时候,就知道元素的个数与内容。创建后不可以新增元素。
fun main() {	
    /**	
     * Kotlin 不可变集合	
     * 都不带有 add 方法和 remove 方法	
     *	
     * 其实不可变的集合,就是给编译器看的.编译器不让你写 remove 方法,最终编译的 class 文件都映射成了 Java 的集合	
     * Java 调用 Kotlin 的不可变集合,是可以调用到 remove 和 add 方法的	
     */	
    val listOf = listOf<String>("1", "2", "3")	
    val setof = setOf<String>("1", "2", "3")	
    val map = mapOf<String, Int>(Pair("1", 1), Pair("2", 2))	
    /**	
     * 注意:	
     * 为啥可以用 to 连接呢?(后续讲到神奇的中缀符号,类似自定义操作符)	
     */	
    val mapof = mapOf("1" to 1, "2" to 3)	
}

补充一点:

可变结合:创建后可以新增元素。

fun main() {	
    /**	
     * Kotlin 中的可变集合	
     * 最终也是映射成 Java 的集合	
     */	
    val list = mutableListOf<String>("1", "2", "3")	
    val mutableMapOf = mutableMapOf(1 to 2, 2 to 3)	
    val mutableSetOf = mutableSetOf(1 , 3)	
    /**	
     * 当然 Kotlin 也可以直接使用 Java 的集合定义	
     */	
    val javaList = ArrayList<String>()	
    val javaMap = HashMap<String, Int>()	
    val javaSet = HashSet<String>()	
}

Kotlin 集合方法的封装

Kotlin 为我们扩展了好多方便操作集合方法,我们来看看常用的几个吧。

List 集合

取值:可直接通过索引获取

fun main() {	
  val javaList = ArrayList<String>()	
  /**	
   * 直接通过索引访问	
   */	
  val s = javaList[0]	
}


取区间还记得 Kotlin 特有的区间吗?当我们想从 list 集合中取一个区间范围的时候,使用 slice 方法即可。

fun main() {	
    val javaList = ArrayList<String>()	
    /**	
     * 取区间,当然也可以使用半开区间 until	
     */	
    val result = javaList.slice(0..2)	
}


List集合直接相加减Kotlin List 集合可以运算啦!(大伙考虑下,怎么实现的呢?

操作解释
list1 + list2最终结果,合并2个集合
list1 - list2最终结果,list1 于 list2 的差集
/**	
 * 2个集合相加,得到第三个集合.	
 * 2个集合相减,左边的集合删除右边集合中存在的元素	
 */	
 fun main() {	
     /**	
      * 这里我特意创建了2个不同类型的集合	
      */	
     val list = mutableListOf<String>("1", "2", "3")	
     val javaList = ArrayList<String>()	
     /**	
      * 1个是 mutableList 一个是 ArrayList	
      * 发现还可以相加,充分证明了,他俩有不可拆分的联系	
      */	
     val listAdd = list + javaList	
 }


遍历丶转换丶过滤Kotlin 提供了很多类似 RxJava 的操作符。

fun main() {	
    val javaList = ArrayList<String>()	
    /**	
     * 数据转换	
     */	
    javaList.map {	
    }	
    /**	
     * 过滤	
     */	
    javaList.filter {	
    }	
    /**	
     * flatMap转换	
     */	
    javaList.flatMap {	
    }	
    /**	
     * 遍历	
     */	
    javaList.forEach {	
    }	
    /**	
     *  索引+值遍历	
     */	
    javaList.forEachIndexed { index, s ->	
    }	
}


删除元素Kotlin 的 remove 方法是删除指定元素,removeAt 是按照索引删除,removeIf 可以条件删除。

fun main() {	
    val list= mutableListOf<String>()	
    /**	
     * 对象删除	
     */	
    list.remove("")	
    /**	
     * 索引删除	
     */	
    list.removeAt(0)	
    /**	
     * 条件删除	
     */	
    list.removeIf {	
    }	
}

Map 集合

Map 集合在 Java 中是经常使用的集合。但是我不得不吐糟 Java 中 Map 集合遍历很恶心。Kotlin 做了很大的改变,接下来我们来瞧一瞧。

增加元素增加元素可以直接使用 [],类似数组赋值的语法增加(取 key 的值,也支持此语法)。

fun main() {	
    /**	
     * 创建可变 Map 并增加 2 个元素	
     * 注意: 这里的增加元素是通过 key to value 的形式,后面会讲解这个 to 的原理	
     */	
    val mutableMap = mutableMapOf<String, Int>("阿文" to 18, "小丽" to 18)	
    /**	
     * 新的增加元素方式,增加 key=阿花 value=12 的一个元素	
     */	
    mutableMap["阿花"] = 12	
}


删除元素

fun main() {	
    val mutableMap = mutableMapOf<String, Int>("阿文" to 18, "小丽" to 18)	
    mutableMap.remove("阿文")	
}


遍历丶转换丶过滤

fun main() {	
    val mutableMap = mutableMapOf<String, Int>("阿文" to 18, "小丽" to 18)	
    /**	
     * map 转换	
     */	
    mutableMap.map {	
    }	
    /**	
     * 过滤	
     */	
    mutableMap.filter {	
    }	
    /**	
     * 遍历	
     */	
    mutableMap.forEach { key, value ->	
    }	
    /**	
     * in 遍历	
     */	
    for (mutableEntry in mutableMap) {	
    }	
    /**	
     * 这种形式的遍历和上面的 in 遍历方式是一致的	
     * 为何可以这样写?后面讲到重载操作符会补充这里	
     */	
    for ((value, key) in mutableMap) {	
    }	
}

总结

Kotlin 为集合提供了很多强大的辅助方法,实现原理都很简单。(都是对集合进行封装。其实这些功能全都归功于 Koltin 的扩展函数。期待我们的下一篇文章吧!)。

参考内容:

  • Reference - Kotlin 语言中文站
    https://www.kotlincn.net/docs/reference/

推荐阅读

640?wx_fmt=png

640?wx_fmt=png

--END--

识别二维码,关注我们

640?wx_fmt=png

展开阅读全文

没有更多推荐了,返回首页