Kotlin中调用ArrayList的removeAt方法如何返回ArrayList<TaskModel>?
解决ArrayList.removeAt返回元素而非单元素列表的问题
嘿,我明白你的困惑啦!ArrayList<T>.removeAt(index: Int) 这个方法的设计初衷就是移除指定索引的元素并返回该元素本身,而不是返回包含这个元素的列表。如果想要得到一个只包含被移除元素的 ArrayList<TaskModel>,可以用这几种简单的方式实现:
方法一:手动创建单元素列表
最直接的方式就是先调用 removeAt 获取被移除的元素,再把它放进新的 ArrayList 里:
// 先移除元素并拿到它 val removedTask = taskModelList.removeAt(1) // 创建只包含该元素的新列表 val taskModelList2 = arrayListOf(removedTask)
这样 taskModelList2 就是你想要的 ArrayList<TaskModel> 类型啦~
方法二:封装成扩展函数(复用性更强)
如果需要频繁做这个操作,可以给 ArrayList 写个扩展函数,以后用起来更方便:
// 给任意类型的ArrayList添加扩展方法 fun <T> ArrayList<T>.removeAtAndReturnSingleElementList(index: Int): ArrayList<T> { val removedElement = this.removeAt(index) return arrayListOf(removedElement) }
调用的时候就像这样:
val taskModelList2 = taskModelList.removeAtAndReturnSingleElementList(1)
注意:原列表的修改问题
要注意的是,removeAt 是原地修改原列表的操作——调用后原 taskModelList 里的对应元素会被删掉。如果不想改动原列表,记得先复制一份再操作:
// 先复制原列表,不影响原始数据 val copiedList = ArrayList(taskModelList) val removedTask = copiedList.removeAt(1) val taskModelList2 = arrayListOf(removedTask)
内容的提问来源于stack exchange,提问作者Praanto
相关产品推荐
相关产品推荐

