[英]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.