Kotlin 集合listOf、mutableListOf、arrayListOf

集合

在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:查找失败
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾阳Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值