集合
在Kotlin中提供了常用的集合使用方式,如下所示:
//创建一个空的list集合,相当于 new ArrayList()
var list = mutableListOf<String>()
var list = mutableListOf("a","b","c")
//获取值
var data = list[0]
var data = list.get(0)
//添加值
list.add("d")
list.add(1,"e")
//创建一个空的map集合,相当于 new LinkedHashMap()
var map = mutableMapOf<String,String>()
//创建一个空的set集合,相当于 new LinkedHashSet()
var set = mutableSetOf<String>()
listOf()函数
创建一个不可变的List。
1、无参的listOf()函数,返回空的List。该函数返回一个单例对象EmptyList。
fun <T> listOf(): List<T>
2、传入一个T类型的数组,如果长度为0就返回空列表,否则就将数组转换为列表。
fun <T> listOf(vararg T): List<T>
mutableListOf()函数
创建一个可变的List。Kotlin的集合框架只定义了接口,具体实现类都是直接调用Java类。
inline fun mutableListOf(): MutableList = ArrayList()
fun mutableListOf(vararg elements: T): MutableList<T> {
if(elements.size == 0) {
return ArrayList()
} else {
return ArrayList(ArrayAsCollection(elements, isVarargs = true))
}
}
*inline关键字定义了内联函数。会在编译时展开到调用处,提高性能。
arrayListOf()函数
arrayListOf()函数用来创建可变的ArrayList。接受可空T?参数,返回非null值的List。
inline fun arrayListOf(): ArrayList = ArrayList()
fun <T> arrayListOf(vararg elements: T): ArrayList<T> {
if(elements.size == 0) {
return ArrayList()
} else {
return ArrayList(ArrayAsCollection(elements, isVarargs = true))
}
}
调用Array<out T?>.filterNotNull()函数。先新建一个ArrayList,遍历数组内的元素,不是null就添加,最后返回ArrayList。
arrayListOf与mutableListOf的区别
var list = mutableListOf("a", "b", null)
Log.e("zhao","list:" + list)
//输出结果:[a, b, null]
var list2 = listOfNotNull("a", "b", null)
Log.e("zhao","list no null :" + list2)
//输出结果:[a, b]
binarySearch()函数
对列表进行二分查找指定元素及指定长度。
//创建一个list
var list = mutableListOf("a", "b")
//默认开始位置0,结束位置 size
var result = list.binarySearch("a")
///方默认开始位置0,结束位置 size
var result = list.binarySearch("a",0,list.size)
返回结果是Int:
- 0:查找成功
- -1:查找失败