Kotlin中是否有更简洁的方式处理含quantity字段的对象列表展开?
Kotlin 简化重复元素列表生成的写法
你可以直接利用Kotlin中List的构造函数替代嵌套的map,让代码更简洁直观:
listOfObjects.flatMap { myObject -> List(myObject.quantity) { myObject.code } }
优化点说明
- 原写法通过遍历数字范围生成重复元素,而
List(myObject.quantity) { myObject.code }直接明确表达“生成包含myObject.code重复quantity次的列表”,语义更贴合需求。 - 去掉了一层嵌套,代码结构更扁平,可读性更强。
如果需要复用这类逻辑,还可以封装成扩展函数,让调用更优雅:
fun <T> List<YourObject>.expandByQuantity(): List<T> { return flatMap { List(it.quantity) { obj -> obj.code } } } // 调用示例 val originalList = listOf(YourObject("A", 1), YourObject("B", 2)) val expandedList = originalList.expandByQuantity() // 结果: ["A", "B", "B"]
内容的提问来源于stack exchange,提问作者Jake Lee
相关产品推荐
相关产品推荐

