我有狗课程和cat 课程.我想一遍又一遍地创建一个列表,其中有2只狗,然后有1只cat ,直到我们的狗用完.列表应该按照狗的顺序对狗进行排序.在Kotlin中最有效的方法是什么?
以下是我当前正在工作的代码:
enum class CatBreed { MAINE_COON, BALINESE, BENGAL }
enum class DogBreed { ITALIAN_GREYHOUND, BEAGLE, AKITA, POMERANIAN, SHIH_TZU, DACHSHUND }
data class Dog(val breed: DogBreed, val order: Int)
data class Cat(val breed: CatBreed)
abstract class PetsItem
data class DogItem(val dog: Dog) : PetsItem()
data class CatItem(val cat: Cat) : PetsItem()
var petsList = arrayListOf<PetsItem>()
val dogs = arrayListOf(Dog(ITALIAN_GREYHOUND, 3), Dog(BEAGLE, 2), Dog(AKITA, 1), Dog(POMERANIAN, 6), Dog(SHIH_TZU, 5), Dog(DACHSHUND, 4))
val cats = arrayListOf(Cat(MAINE_COON), Cat(BALINESE), Cat(BENGAL))
val orderedDogs = ArrayList(dogs.asSequence()
.sortedBy { it.order }
.toList())
for ((index, dog) in orderedDogs.withIndex()) {
petsList.add(DogItem(dog = dog))
if (index % 2 == 1) {
if (cats.isNotEmpty()) {
petsList.add(CatItem(cat = cats.removeAt(0)))
}
}
}
我有这个代码:
val list = ArrayList(dogs.asSequence()
.sortBy { it.order }
.map { DogItem(dog = it) }
.toList())
这在将Dog对象转换为DogProject对象方面似乎非常有效.但我不知道如何修改它以允许cat .
那么,有人知道是否有比我目前正在做的更有效的方法来根据我想要的创建列表吗?