[英]Sorting arraylist and returning an arraylist (not a list) - Kotlin
我正在尝试使用RecyclerView
显示排序信息。 为此,我有一个自定义数据类型的ArrayList
。 我想使用ArrayList
中的字段之一按降序对ArrayList
中的数据进行排序。 我熟悉已经可用的方法( sortWith
、 sortBy
、 sortByDescending
等),但不幸的是,它们都从ArrayList
更改为List
,这会使回收站视图停止工作。 理想情况下,我想保留ArrayList
,因为我需要它用于我稍后在项目中执行的其他流程。
我想要达到的目标:
输入: arrayListName = ArrayList<CustomType>
过程:[按arrayListName.firstName
的降序排序]
OUTPUT: return ArrayList<CustomType>
我尝试将List
(如下所示)转换为ArrayList
,但这会引发以下错误:
java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
抛出错误的代码行(我尝试了各种方法,但它们都在该行抛出异常):
val sortedModel = model.sortedWith(compareBy { it.name}) as ArrayList<Model>
任何帮助表示赞赏(:
我对 java 解决方案也很满意,因为我理解它并且可以轻松地从 java 到 kotlin 实施。
您不能将List
直接转换为ArrayList
。 如果要将List
转换为ArrayList
,可以这样做:
val sortedModel = model.sortedByDescending { it.name }.toCollection(ArrayList())
这将帮助你
val list = arrayList.sortedByDescending { it.firstName.length }
result.addAll(list)
完整代码:
val arrayList: ArrayList<CustomType> = arrayListOf()
val result: ArrayList<CustomType> = arrayListOf()
arrayList.add(CustomType("Aadddd"))
arrayList.add(CustomType("Ccd"))
arrayList.add(CustomType("Bbdd"))
arrayList.add(CustomType("Ffddd"))
arrayList.add(CustomType("Dd"))
val list = arrayList.sortedByDescending { it.firstName.length }
result.addAll(list)
Output:
SORT [{"firstName":"Aadddd"},{"firstName":"Ffddd"},{"firstName":"Bbdd"},{"firstName":"Ccd"},{"firstName":"Dd"}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.