如何在Kotlin中从MSetting列表高效填充entries与entryValues数组?
更简洁的Kotlin方式提取列表属性到数组
当然有更简洁的实现方式!Kotlin的标准库提供了一系列集合操作符,能帮你摆脱手动循环的繁琐,一行代码就能完成属性提取和数组转换。
首先要注意:你原来定义的entries和entryValues是用arrayOf()创建的固定大小数组,这种数组是没有add()方法的(调用会直接报错)。下面的写法直接生成符合需求的CharSequence数组,同时完成属性提取:
// 直接生成新的数组,类型自动推导为Array<CharSequence> val entries = myList.map { it.name }.toTypedArray() val entryValues = myList.map { it._id.toString() }.toTypedArray()
如果需要复用你原来声明的变量(保持var修饰),直接赋值即可:
entries = myList.map { it.name }.toTypedArray() entryValues = myList.map { it._id.toString() }.toTypedArray()
代码解释
map { it.name }:遍历myList中的每个MSetting对象,把对象转换成它的name属性(String类型,而String天然实现了CharSequence,完全符合类型要求)。map { it._id.toString() }:因为_id是Long类型,需要转成String才能作为CharSequence,这里直接在map操作里完成类型转换。toTypedArray():把map生成的List转换成Array<CharSequence>,完美匹配你需要的数组类型。
这种写法比手动循环更简洁,可读性也更强,完全贴合Kotlin的简洁编程风格。
内容的提问来源于stack exchange,提问作者HelloCW
相关产品推荐
相关产品推荐

