kotlin集合基本API

来源:互联网 发布:mysql limit offset 编辑:程序博客网 时间:2024/06/06 13:16

List和MutableList

List集合是MutableList的接口,List接口中没有增删改成方法,MutableList接口中添加了增删改查,通常使用MutableList集合,为有序可重复集合

初始化:var list: List<Int> = listOf(1,2,3,4)var mutableList: MutableList<Int> = mutableListOf(0, 23, 4, 3)常用方法:add--增加元素remove--删除某一个元素removeAt--删除指定索引的处的元素set--修改哪一个索引处的元素get--得到哪一个索引处的元素contains--是否包含某个元素containsAll--是否包含某个集合中的所有元素size--返回集合的大小union--两个集合的并集,返回新集合intersect--两个集合的交集,返回新集合subtract--两个集合的差集,返回新集合minus--两个集合的补集,返回新集合any--判断集合中是否有满足条件 的元素;all--判断集合中的元素是否都满足条件;count--查询集合中满足条件的元素个数;fold--在给定初始值的基础上,从第一项到最后一项进行累加;foldRight--在给定初始值的基础上,从最后一下到第一项进行累加,与fold只是的方向不同;forEach--循环遍历元素,元素是it,可对每个元素进行相关操作;forEachIndexed--循环遍历元素,同时得到元素index(下标);max--查询最大的元素,如果没有则返回null;maxBy--获取方法处理后返回结果最大值对应的那个元素的初始值,如果没有则返回null;min--查询最小的元素,如果没有则返回null;minBy--获取方法处理后返回结果最小值对应那个元素的初始值,如果没有则返回null;none--判断集合中是否都不满足条件,是则返回true;reduce--与fold区别在于没有初始值,或者说初始值为0,从第一项到最后一项进行累加;reduceRight--从最后一项到第一项进行累加,与reduce只是方向的不同;sumBy--获取方法处理后返回结果值的总和;`drop--返回去掉前n个元素后的列表;dropWhile--返回从第一项起,去掉满足条件的元素,直到不满足条件的一项为止;dropLastWhile--返回从最后一项起,去掉满足条件的元素,直到不满足条件的一项为止;filter--过滤掉所有不满足条件的元素;filterNot--过滤掉所有满足条件的元素;filterNotNull--过滤掉所有值为null的元素;slice--过滤掉非指定下标的元素,即保留下标对应的元素过滤List中指定下标的元素(比如这里只保留下标为1,3,4的元素),当过滤list中有元素值大于目标List大小时会出现异常;关于slice操作,在实际使用时需要注意过滤List中的元素值,以免出现ArrayIndexOutOfBoundsException异常。take--返回从第一个开始的n个元素;takeLast--返回从最后一个开始的n个元素;takeWhile--返回不满足条件的下标前面的所有元素的集合;flatMap--合并两个集合,可以在合并的时候对迭代元素值it多想要的操作;groupBy--将集合中的元素按照某个条件分组,返回Map;map--将集合中的元素通过某个方法转换后的结果存到一个集合中;mapIndexed--除了得到转换后的结果,还可以拿到index(下标);mapNotNull--执行方法转换前过滤掉为null的元素;contains--判断集合中是否有指定元素,有则返回true;elementAt--查找下标对应的元素,如果下标越界会抛IndexOutOfBoundsException异常;elementAtOrElse--查找下标对应元素,如果越界会根据方法返回默认值(最大下标经方法后的值);elementAtOrNull--查找下标对应元素,越界会返回Null;first--返回符合条件的第一个元素,没有则会抛NoSuchElementException异常;firstOrNull--返回符合条件的第一个元素,没有返回null;indexOf--返回指定下标的元素,没有返回-1;indexOfFirst--返回第一个符合条件的元素下标,没有返回-1;indexOfLast--返回最后一个符合条件的元素下标,没有返回-1;last--返回符合条件的最后一个元素,没有则会抛NoSuchElementException异常;lastIndexOf--返回符合条件的最后一个元素,没有返回-1;lastOrNull--返回符合条件的最后一个元素,没有返回null;single--返回符合条件的单个元素,如有没有符合的或符合超过一个分别会抛NoSuchElementException或IllegalArgumentException异常;singleOrNull--返回符合条件的单个元素,如有没有符合或超过一个,返回null;可以看到,容易出现异常的操作Kotlin会给出另一个安全调用的替代,如first与firstOrNull。partition--根据判断条件是否成立,拆分成两个Pair;plus--合并两个List,可以用"+"替代;zip--两个集合按照下标组合成一个个的Pair塞到集合中返回;unzip--将包含多个Pair的List转换成含List的Pair;Pair对象的数据组成形式为(first, secord),即Pair(1, 2).first可以取出数据1reversed--相反顺序;sorted--自然排序(升序);sortedBy--根据方法处理结果进行自然(升序)排序;sortedDescending--降序排序;sortedByDescending--根据方法处理结果进行降序排序;注意:新版kotlin需要调用sorted()这样带"ed"后缀的方法才能返回List,而sort()是返回Unit。那么这两种方法还有哪些区别,或者说分别在什么场景下使用?还是以sort为例,sorted()处理过程中会新建临时的List来保存结果数据,对原来的调用者List不会做任何改变,所以需要将新建的对象返回;而sort()是在原来的List基础上进行元素顺序的调整,不会新建对象,所以不需要返回List。

Set与MutableSet集合

MutableSet是Set的派生接口,增删改查方法在MutableSet接口中定义,为无序不重复集合。
初始化:var set: Set<Int> = setOf(1,2,3,4)var mutableSet: MutableSet<Int> = mutableSetOf(1,2,3,4)常用方法(与list类似的方法不再提及):toMutableList--返回MutableList集合以上介绍的List集合的方法Set集合大都拥有,用法相同

Map、MutableMap、HashMap和LinkedHashMap

map集合是可读的,但不可更改,没有增删改查的方法。**重点内容**MutableMap是可读可写,拥有增删改查方法,Pair键值对构成。HashMap:Map基于散列表的实现。插入和查询“键值对”的开销是固定的。可以通过构造器设置容量capacity和负载因子load factor,以调整容器的性能。
LinkedHashMap: 类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点。而在迭代访问时发而更快,因为它使用链表维护内部次序。mapOf和mutableMapOf()创建的Map是基于Java的LinkedHashMap。Kotlin现并不支持TreeMap 、WeakHashMao 、IdentifyHashMap。

map集合初始化

//初始化Map集合var map = mapOf<String,Int>("xy" to 123,"aaa" to 456,"bbb" to 789)//初始化MutableMapvar mutableMap = mutableMapOf<String,Int>("xy" to 123,"aaa" to 456,"bbb" to 789)//创建一个空的map集合val mapEmpty = emptyMap<Int, Book>()//HashMap初始化val hashMap = hashMapOf(1 to bookA, 2 to bookB)//LinkedHashMap初始化val linkedHashMap = linkedMapOf(1 to bookA, 2 to bookB)//基于Pairval airportsMap= mapOf<String ,String>(Pair("PVG","浦东"),Pair("SHA","虹桥"),Pair("HGH","萧山"))

map的遍历

for ((k,v) in map){    println("$k -> $v")}
常用方法:(不再不含以上介绍过的方法)put--添加元素remove--删除元素set--修改元素get--查找元素replace--替换keys--返回存储Key值的Set集合values--返回存储value值的Set集合
原创粉丝点击