我有一個填充了混合用戶庫存物件的陣列。
物件具有 object.name 屬性。當我遍歷陣列時,它已經按名稱排序。如果我們查看陣列中的 obj.name,它將具有以下結構
[ball,ball,monkey,monkey,sausage]
我想回圈遍歷陣列。
獲取具有公共名稱屬性的所有元素并從這些元素中創建一個新陣列。
有什么建議嗎?如果我們可以將陣列命名為 object.name 屬性,則可以加分。我正在使用科特林。
這是我必須開始的代碼/想法,如果這不可行,請提供任何其他建議
private fun sortElements(){
val temp = userstuff[0].name //but what if they only have 1 of these names.. doesnt work
userstuff.forEach { element ->
if(temp == element.name)
we have another item with same name put in appropriate array
else{
new array
loop
}
uj5u.com熱心網友回復:
如果我正確理解了您的用例,您應該能夠執行以下操作:
private fun sortElements(input: List<Stuff>) = input.groupBy { it.name }
這里的想法是您將每個元素放入 aMap中,其中鍵是name值,值是List物件的 a。
在這里舉個例子,假設我有一個data class被呼叫的Stuff:
data class Stuff(
val name: String,
val otherField: Int,
)
和如下所示的測驗資料:
val userStuff = listOf(
Stuff("ball", 242),
Stuff("ball", 11),
Stuff("monkey", 848),
Stuff("monkey", 455),
Stuff("sausage", 836),
)
呼叫上面的函式會得到這樣的結果(這將是 a Map<String, Stuff>,我只是將其列印出來以便您可以看到其中的內容):
{
ball=[
Stuff(name=ball, otherField=242),
Stuff(name=ball, otherField=11)
],
monkey=[
Stuff(name=monkey, otherField=848),
Stuff(name=monkey, otherField=455)
],
sausage=[
Stuff(name=sausage, otherField=836)
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/466414.html
上一篇:按2列對2D陣列進行排序
