kotlin集合操作
- 集合取元素
- 位置取elementAt(int index) //标准位置取法,等价get() list[int index],取到范围之外的元素会抛异常。安全变体:elementAtOrNull()超出范围返回null,elementAtOrElse()接收一个函数,超出范围返回该函数的值。
- 条件取first(fun())//取首个符合条件的元素,last(fun())//取末尾符合条件的元素,没有找到抛异常,安全变体:firstOrNull()和lastOrNull()未取到返回null,等价于find()和findLast()
- 判断存在contains()//是否包含单个元素,containsAll()//是否包含多个元素的集合。
- 集合聚合操作
- maxBy(filter())/minBy(filter())//查找符合过滤函数的最大或最小值。
- maxWith(compataror)/minWith(comparator)//查找符合comparator的最大或最小元素。
- sumBy(operator())//对每个元素执行operator函数后的返回值求和。变体:sunByDouble(operator():Double):Double
- 集合写操作
同时支持写函数和写操作符
add() +=
addAll(Iterable/Sequence/Array) Set和List可以互写。
remove()移除首个相同的元素
removeAll(){}移除符合条件的所有元素
retainAll(){}保留符合条件的所有元素,其余全移除。
- 集合的排序方法
- sortBy()接收一个提供排序依据的函数
- sortWith()接收一个Comparator对象
- kotlin标准库提供一个函数compareBy(),接收一个提供排序依据的函数,返回一个Comparator对象。
- 不可变集合倒序函数reversed()和asReversed()都是返回一个集合,同时不影响原集合的数据,区别是asReversed()返回原集合倒序的元素视图,更轻量,是更好的选择。
- 可变集合使用asReversed()函数,会改变原集合的数据,同时返回原集合的引用。可变集合倒序最好选择reversed()函数,不改变原集合数据,返回的是原集合的数据拷贝。
- Set相关操作
- union 合并merge操作,合并后顺序仍然按照原来的排序规则???
- SetA intersect SetB查找俩集合相交的元素
- SetA subtract SetB查找集合SetA中独有的元素。
- 这些方法也是可以用到list上,这样会忽略其中的重复元素。
- Map的操作
- plus/minus(pair(key,value)/Map)key在左边map中不存在时,为增加操作,key已经存在时,为更新操作。
- 写操作:put(key,value)添加或者更新元素,putAll(Map/Pair[]/Iterable/Sequence/Array)批量添加或更新,等价操作是+=和Map[key]=value,移除操作remove(key/Pair(key,value)),提供的key和value必须同时匹配,根据key移除map.keys.remove(key),根据value移除map.values.remove(value),只移除遇到的首个匹配的value值。等价操作是-=。