как настроить сортировку в классе enum в kotlin - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть класс enum в kotlin, в котором я должен сортировать их по-разному в зависимости от входных параметров.

На данный момент у меня есть этот класс, определенный

enum class ProductItem constructor(
    val color,
    val price,
    val position
){

SHOES("red", "$", 2)
CAR("blue", "$$$$$", 1)
BOAT("green", "$$$$$$$$$$$$$", 3)
}

На данный момент используется упрощенный код, подобный этому:

it.sortedBy { it.ProductItem?.position })

Я ожидал, что возвращенный список перечислений будет отсортирован в порядке возрастания и покажет: CAR, SHOES and BOAT, но он по-прежнему показывает SHOES, CAR, BOAT. Похоже, параметры position не учтены. Любая идея, как использовать положение params для сортировки списка enum

Спасибо

1 Ответ

0 голосов
/ 05 ноября 2018

Судя по вашему коду, у вас есть некоторый класс (например, Order), который имеет необязательное свойство с именем ProductItem, которое возвращает значение перечисления ProductItem. И тогда у вас есть список или массив этих Order объектов, которые вы хотите отсортировать по position соответствующего ProductItem. Это правильно?

Если это так, ниже приведен код, который показывает, как можно отсортировать список заказов ...

enum class ProductItem constructor(
        val color: String,
        val price: String,
        val position: Int
) {
    SHOES("red", "$", 2),
    CAR("blue", "$$$$$", 1),
    BOAT("green", "$$$$$$$$$$$$$", 3)
}

data class Order(val ProductItem: ProductItem? = null)

val orders = listOf(Order(ProductItem.SHOES), Order(ProductItem.CAR), Order(ProductItem.BOAT))
val sortedOrders = orders.sortedBy { it.ProductItem?.position }

Это дает вам то, что вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...