Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

how to use sortBy in kotlin

Hey I want to sort the data class in kotlin. I tried to sort by ascending order, but it not sorting correctly.

ProductVariant.kt

data class ProductVariant(
    val strength: String? = null,
    val quantity: String? = null,
    val subscription: String? = null
)

First I need to sort by strength value then after sorting, I want to sort by quantity value in ascending order. I tried some code to sort first by strength it’s not working.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Options.kt

fun main() {
    val list = getUnSortedDataList()

    val sortedList = list.sortedBy {
        it.subscription
    }

    sortedList.forEach {
        println(it)
    }
}

fun getUnSortedDataList(): List<ProductVariant> {
    return listOf(
        ProductVariant(strength = "75", quantity = "14", subscription = "1"),
        ProductVariant(strength = "75", quantity = "14", subscription = "3"),
        ProductVariant(strength = "75", quantity = "14", subscription = "6"),
        ProductVariant(strength = "75", quantity = "14", subscription = "9"),
        ProductVariant(strength = "75", quantity = "14", subscription = "12"),
        ProductVariant(strength = "25", quantity = "8", subscription = "1"),
        ProductVariant(strength = "25", quantity = "8", subscription = "3"),
        ProductVariant(strength = "25", quantity = "8", subscription = "6"),
        ProductVariant(strength = "25", quantity = "8", subscription = "9"),
        ProductVariant(strength = "25", quantity = "8", subscription = "12"),
        ProductVariant(strength = "50", quantity = "14", subscription = "1"),
        ProductVariant(strength = "50", quantity = "14", subscription = "3"),
        ProductVariant(strength = "50", quantity = "14", subscription = "6"),
        ProductVariant(strength = "50", quantity = "14", subscription = "9"),
        ProductVariant(strength = "50", quantity = "14", subscription = "12"),
        ProductVariant(strength = "75", quantity = "10", subscription = "1"),
        ProductVariant(strength = "75", quantity = "10", subscription = "3"),
        ProductVariant(strength = "75", quantity = "10", subscription = "6"),
        ProductVariant(strength = "75", quantity = "10", subscription = "9"),
        ProductVariant(strength = "75", quantity = "10", subscription = "12"),
        ProductVariant(strength = "25", quantity = "2", subscription = "1"),
        ProductVariant(strength = "25", quantity = "2", subscription = "3"),
        ProductVariant(strength = "25", quantity = "2", subscription = "6"),
        ProductVariant(strength = "25", quantity = "2", subscription = "9"),
        ProductVariant(strength = "25", quantity = "2", subscription = "12"),
        ProductVariant(strength = "25", quantity = "4", subscription = "1"),
        ProductVariant(strength = "25", quantity = "4", subscription = "3"),
        ProductVariant(strength = "25", quantity = "4", subscription = "6"),
        ProductVariant(strength = "25", quantity = "4", subscription = "9"),
        ProductVariant(strength = "25", quantity = "4", subscription = "12"),
        ProductVariant(strength = "25", quantity = "6", subscription = "1"),
        ProductVariant(strength = "25", quantity = "6", subscription = "3"),
        ProductVariant(strength = "25", quantity = "6", subscription = "6"),
        ProductVariant(strength = "25", quantity = "6", subscription = "9"),
        ProductVariant(strength = "25", quantity = "6", subscription = "12"),
        ProductVariant(strength = "25", quantity = "10", subscription = "1"),
        ProductVariant(strength = "25", quantity = "10", subscription = "3"),
        ProductVariant(strength = "25", quantity = "10", subscription = "6"),
        ProductVariant(strength = "25", quantity = "10", subscription = "9"),
        ProductVariant(strength = "25", quantity = "10", subscription = "12"),
        ProductVariant(strength = "25", quantity = "12", subscription = "1"),
        ProductVariant(strength = "25", quantity = "12", subscription = "3"),
        ProductVariant(strength = "25", quantity = "12", subscription = "6"),
        ProductVariant(strength = "25", quantity = "12", subscription = "9"),
        ProductVariant(strength = "25", quantity = "12", subscription = "12"),
        ProductVariant(strength = "25", quantity = "14", subscription = "1"),
        ProductVariant(strength = "25", quantity = "14", subscription = "3"),
        ProductVariant(strength = "25", quantity = "14", subscription = "6"),
        ProductVariant(strength = "25", quantity = "14", subscription = "9"),
        ProductVariant(strength = "25", quantity = "14", subscription = "12"),
        ProductVariant(strength = "50", quantity = "2", subscription = "1"),
        ProductVariant(strength = "50", quantity = "2", subscription = "3"),
        ProductVariant(strength = "50", quantity = "2", subscription = "6"),
        ProductVariant(strength = "50", quantity = "2", subscription = "9"),
        ProductVariant(strength = "50", quantity = "2", subscription = "12"),
        ProductVariant(strength = "50", quantity = "4", subscription = "1"),
        ProductVariant(strength = "50", quantity = "4", subscription = "3"),
        ProductVariant(strength = "50", quantity = "4", subscription = "6"),
        ProductVariant(strength = "50", quantity = "4", subscription = "9"),
        ProductVariant(strength = "50", quantity = "4", subscription = "12"),
        ProductVariant(strength = "50", quantity = "6", subscription = "1"),
        ProductVariant(strength = "50", quantity = "6", subscription = "3"),
        ProductVariant(strength = "50", quantity = "6", subscription = "6"),
        ProductVariant(strength = "50", quantity = "6", subscription = "9"),
        ProductVariant(strength = "50", quantity = "6", subscription = "12"),
        ProductVariant(strength = "50", quantity = "10", subscription = "1"),
        ProductVariant(strength = "50", quantity = "10", subscription = "3"),
        ProductVariant(strength = "50", quantity = "10", subscription = "6"),
        ProductVariant(strength = "50", quantity = "10", subscription = "9"),
        ProductVariant(strength = "50", quantity = "10", subscription = "12"),
        ProductVariant(strength = "50", quantity = "12", subscription = "1"),
        ProductVariant(strength = "50", quantity = "12", subscription = "3"),
        ProductVariant(strength = "50", quantity = "12", subscription = "6"),
        ProductVariant(strength = "50", quantity = "12", subscription = "9"),
        ProductVariant(strength = "50", quantity = "12", subscription = "12"),
        ProductVariant(strength = "75", quantity = "2", subscription = "1"),
        ProductVariant(strength = "75", quantity = "2", subscription = "3"),
        ProductVariant(strength = "75", quantity = "2", subscription = "6"),
        ProductVariant(strength = "75", quantity = "2", subscription = "9"),
        ProductVariant(strength = "75", quantity = "2", subscription = "12"),
        ProductVariant(strength = "75", quantity = "6", subscription = "1"),
        ProductVariant(strength = "75", quantity = "6", subscription = "3"),
        ProductVariant(strength = "75", quantity = "6", subscription = "6"),
        ProductVariant(strength = "75", quantity = "6", subscription = "9"),
        ProductVariant(strength = "75", quantity = "6", subscription = "12"),
        ProductVariant(strength = "75", quantity = "8", subscription = "1"),
        ProductVariant(strength = "75", quantity = "8", subscription = "3"),
        ProductVariant(strength = "75", quantity = "8", subscription = "6"),
        ProductVariant(strength = "75", quantity = "8", subscription = "9"),
        ProductVariant(strength = "75", quantity = "8", subscription = "12"),
        ProductVariant(strength = "75", quantity = "12", subscription = "1"),
        ProductVariant(strength = "75", quantity = "12", subscription = "3"),
        ProductVariant(strength = "75", quantity = "12", subscription = "6"),
        ProductVariant(strength = "75", quantity = "12", subscription = "9"),
        ProductVariant(strength = "75", quantity = "12", subscription = "12"),
        ProductVariant(strength = "50", quantity = "8", subscription = "1"),
        ProductVariant(strength = "50", quantity = "8", subscription = "3"),
        ProductVariant(strength = "50", quantity = "8", subscription = "6"),
        ProductVariant(strength = "50", quantity = "8", subscription = "9"),
        ProductVariant(strength = "50", quantity = "8", subscription = "12"),
        ProductVariant(strength = "75", quantity = "4", subscription = "1"),
        ProductVariant(strength = "75", quantity = "4", subscription = "3"),
        ProductVariant(strength = "75", quantity = "4", subscription = "6"),
        ProductVariant(strength = "75", quantity = "4", subscription = "9"),
        ProductVariant(strength = "75", quantity = "4", subscription = "12")
    )
}

Getting output through above code is

ProductVariant(strength=75, quantity=14, subscription=1)
ProductVariant(strength=25, quantity=8, subscription=1)
ProductVariant(strength=50, quantity=14, subscription=1)
ProductVariant(strength=75, quantity=10, subscription=1)
ProductVariant(strength=25, quantity=2, subscription=1)
ProductVariant(strength=25, quantity=4, subscription=1)
ProductVariant(strength=25, quantity=6, subscription=1)
ProductVariant(strength=25, quantity=10, subscription=1)
ProductVariant(strength=25, quantity=12, subscription=1)
ProductVariant(strength=25, quantity=14, subscription=1)
ProductVariant(strength=50, quantity=2, subscription=1)
ProductVariant(strength=50, quantity=4, subscription=1)
ProductVariant(strength=50, quantity=6, subscription=1)
ProductVariant(strength=50, quantity=10, subscription=1)
ProductVariant(strength=50, quantity=12, subscription=1)
ProductVariant(strength=75, quantity=2, subscription=1)
ProductVariant(strength=75, quantity=6, subscription=1)
ProductVariant(strength=75, quantity=8, subscription=1)
ProductVariant(strength=75, quantity=12, subscription=1)
ProductVariant(strength=50, quantity=8, subscription=1)
ProductVariant(strength=75, quantity=4, subscription=1)
ProductVariant(strength=75, quantity=14, subscription=12)
ProductVariant(strength=25, quantity=8, subscription=12)
ProductVariant(strength=50, quantity=14, subscription=12)
ProductVariant(strength=75, quantity=10, subscription=12)
ProductVariant(strength=25, quantity=2, subscription=12)
ProductVariant(strength=25, quantity=4, subscription=12)
ProductVariant(strength=25, quantity=6, subscription=12)
ProductVariant(strength=25, quantity=10, subscription=12)
ProductVariant(strength=25, quantity=12, subscription=12)
ProductVariant(strength=25, quantity=14, subscription=12)
ProductVariant(strength=50, quantity=2, subscription=12)
ProductVariant(strength=50, quantity=4, subscription=12)
ProductVariant(strength=50, quantity=6, subscription=12)
ProductVariant(strength=50, quantity=10, subscription=12)
ProductVariant(strength=50, quantity=12, subscription=12)
ProductVariant(strength=75, quantity=2, subscription=12)
ProductVariant(strength=75, quantity=6, subscription=12)
ProductVariant(strength=75, quantity=8, subscription=12)
ProductVariant(strength=75, quantity=12, subscription=12)
ProductVariant(strength=50, quantity=8, subscription=12)
ProductVariant(strength=75, quantity=4, subscription=12)
ProductVariant(strength=75, quantity=14, subscription=3)
ProductVariant(strength=25, quantity=8, subscription=3)
ProductVariant(strength=50, quantity=14, subscription=3)
ProductVariant(strength=75, quantity=10, subscription=3)
ProductVariant(strength=25, quantity=2, subscription=3)
ProductVariant(strength=25, quantity=4, subscription=3)
ProductVariant(strength=25, quantity=6, subscription=3)
ProductVariant(strength=25, quantity=10, subscription=3)
ProductVariant(strength=25, quantity=12, subscription=3)
ProductVariant(strength=25, quantity=14, subscription=3)
ProductVariant(strength=50, quantity=2, subscription=3)
ProductVariant(strength=50, quantity=4, subscription=3)
ProductVariant(strength=50, quantity=6, subscription=3)
ProductVariant(strength=50, quantity=10, subscription=3)
ProductVariant(strength=50, quantity=12, subscription=3)
ProductVariant(strength=75, quantity=2, subscription=3)
ProductVariant(strength=75, quantity=6, subscription=3)
ProductVariant(strength=75, quantity=8, subscription=3)
ProductVariant(strength=75, quantity=12, subscription=3)
ProductVariant(strength=50, quantity=8, subscription=3)
ProductVariant(strength=75, quantity=4, subscription=3)
ProductVariant(strength=75, quantity=14, subscription=6)
ProductVariant(strength=25, quantity=8, subscription=6)
ProductVariant(strength=50, quantity=14, subscription=6)
ProductVariant(strength=75, quantity=10, subscription=6)
ProductVariant(strength=25, quantity=2, subscription=6)
ProductVariant(strength=25, quantity=4, subscription=6)
ProductVariant(strength=25, quantity=6, subscription=6)
ProductVariant(strength=25, quantity=10, subscription=6)
ProductVariant(strength=25, quantity=12, subscription=6)
ProductVariant(strength=25, quantity=14, subscription=6)
ProductVariant(strength=50, quantity=2, subscription=6)
ProductVariant(strength=50, quantity=4, subscription=6)
ProductVariant(strength=50, quantity=6, subscription=6)
ProductVariant(strength=50, quantity=10, subscription=6)
ProductVariant(strength=50, quantity=12, subscription=6)
ProductVariant(strength=75, quantity=2, subscription=6)
ProductVariant(strength=75, quantity=6, subscription=6)
ProductVariant(strength=75, quantity=8, subscription=6)
ProductVariant(strength=75, quantity=12, subscription=6)
ProductVariant(strength=50, quantity=8, subscription=6)
ProductVariant(strength=75, quantity=4, subscription=6)
ProductVariant(strength=75, quantity=14, subscription=9)
ProductVariant(strength=25, quantity=8, subscription=9)
ProductVariant(strength=50, quantity=14, subscription=9)
ProductVariant(strength=75, quantity=10, subscription=9)
ProductVariant(strength=25, quantity=2, subscription=9)
ProductVariant(strength=25, quantity=4, subscription=9)
ProductVariant(strength=25, quantity=6, subscription=9)
ProductVariant(strength=25, quantity=10, subscription=9)
ProductVariant(strength=25, quantity=12, subscription=9)
ProductVariant(strength=25, quantity=14, subscription=9)
ProductVariant(strength=50, quantity=2, subscription=9)
ProductVariant(strength=50, quantity=4, subscription=9)
ProductVariant(strength=50, quantity=6, subscription=9)
ProductVariant(strength=50, quantity=10, subscription=9)
ProductVariant(strength=50, quantity=12, subscription=9)
ProductVariant(strength=75, quantity=2, subscription=9)
ProductVariant(strength=75, quantity=6, subscription=9)
ProductVariant(strength=75, quantity=8, subscription=9)
ProductVariant(strength=75, quantity=12, subscription=9)
ProductVariant(strength=50, quantity=8, subscription=9)
ProductVariant(strength=75, quantity=4, subscription=9)

I want like this

Expected output

        ProductVariant(strength = "25", quantity = "2", subscription = "1"),
        ProductVariant(strength = "25", quantity = "2", subscription = "3"),
        ProductVariant(strength = "25", quantity = "2", subscription = "6"),
        ProductVariant(strength = "25", quantity = "2", subscription = "9"),
        ProductVariant(strength = "25", quantity = "2", subscription = "12"),
        ProductVariant(strength = "25", quantity = "4", subscription = "1"),
        ProductVariant(strength = "25", quantity = "4", subscription = "3"),
        ProductVariant(strength = "25", quantity = "4", subscription = "6"),
        ProductVariant(strength = "25", quantity = "4", subscription = "9"),
        ProductVariant(strength = "25", quantity = "4", subscription = "12"),
        ProductVariant(strength = "25", quantity = "6", subscription = "1"),
        ProductVariant(strength = "25", quantity = "6", subscription = "3"),
        ProductVariant(strength = "25", quantity = "6", subscription = "6"),
        ProductVariant(strength = "25", quantity = "6", subscription = "9"),
        ProductVariant(strength = "25", quantity = "6", subscription = "12"),
        ProductVariant(strength = "25", quantity = "8", subscription = "1"),
        ProductVariant(strength = "25", quantity = "8", subscription = "3"),
        ProductVariant(strength = "25", quantity = "8", subscription = "6"),
        ProductVariant(strength = "25", quantity = "8", subscription = "9"),
        ProductVariant(strength = "25", quantity = "8", subscription = "12"),
        ProductVariant(strength = "25", quantity = "10", subscription = "1"),
        ProductVariant(strength = "25", quantity = "10", subscription = "3"),
        ProductVariant(strength = "25", quantity = "10", subscription = "6"),
        ProductVariant(strength = "25", quantity = "10", subscription = "9"),
        ProductVariant(strength = "25", quantity = "10", subscription = "12"),
        ProductVariant(strength = "25", quantity = "12", subscription = "1"),
        ProductVariant(strength = "25", quantity = "12", subscription = "3"),
        ProductVariant(strength = "25", quantity = "12", subscription = "6"),
        ProductVariant(strength = "25", quantity = "12", subscription = "9"),
        ProductVariant(strength = "25", quantity = "12", subscription = "12"),
        ProductVariant(strength = "25", quantity = "14", subscription = "1"),
        ProductVariant(strength = "25", quantity = "14", subscription = "3"),
        ProductVariant(strength = "25", quantity = "14", subscription = "6"),
        ProductVariant(strength = "25", quantity = "14", subscription = "9"),
        ProductVariant(strength = "25", quantity = "14", subscription = "12"),
        ProductVariant(strength = "50", quantity = "2", subscription = "1"),
        ProductVariant(strength = "50", quantity = "2", subscription = "3"),
        ProductVariant(strength = "50", quantity = "2", subscription = "6"),
        ProductVariant(strength = "50", quantity = "2", subscription = "9"),
        ProductVariant(strength = "50", quantity = "2", subscription = "12"),
        ProductVariant(strength = "50", quantity = "4", subscription = "1"),
        ProductVariant(strength = "50", quantity = "4", subscription = "3"),
        ProductVariant(strength = "50", quantity = "4", subscription = "6"),
        ProductVariant(strength = "50", quantity = "4", subscription = "9"),
        ProductVariant(strength = "50", quantity = "4", subscription = "12"),
        ProductVariant(strength = "50", quantity = "6", subscription = "1"),
        ProductVariant(strength = "50", quantity = "6", subscription = "3"),
        ProductVariant(strength = "50", quantity = "6", subscription = "6"),
        ProductVariant(strength = "50", quantity = "6", subscription = "9"),
        ProductVariant(strength = "50", quantity = "6", subscription = "12"),
        ProductVariant(strength = "50", quantity = "8", subscription = "1"),
        ProductVariant(strength = "50", quantity = "8", subscription = "3"),
        ProductVariant(strength = "50", quantity = "8", subscription = "6"),
        ProductVariant(strength = "50", quantity = "8", subscription = "9"),
        ProductVariant(strength = "50", quantity = "8", subscription = "12"),
        ProductVariant(strength = "50", quantity = "10", subscription = "1"),
        ProductVariant(strength = "50", quantity = "10", subscription = "3"),
        ProductVariant(strength = "50", quantity = "10", subscription = "6"),
        ProductVariant(strength = "50", quantity = "10", subscription = "9"),
        ProductVariant(strength = "50", quantity = "10", subscription = "12"),
        ProductVariant(strength = "50", quantity = "12", subscription = "1"),
        ProductVariant(strength = "50", quantity = "12", subscription = "3"),
        ProductVariant(strength = "50", quantity = "12", subscription = "6"),
        ProductVariant(strength = "50", quantity = "12", subscription = "9"),
        ProductVariant(strength = "50", quantity = "12", subscription = "12"),
        ProductVariant(strength = "50", quantity = "14", subscription = "1"),
        ProductVariant(strength = "50", quantity = "14", subscription = "3"),
        ProductVariant(strength = "50", quantity = "14", subscription = "6"),
        ProductVariant(strength = "50", quantity = "14", subscription = "9"),
        ProductVariant(strength = "50", quantity = "14", subscription = "12"),
        ProductVariant(strength = "75", quantity = "2", subscription = "1"),
        ProductVariant(strength = "75", quantity = "2", subscription = "3"),
        ProductVariant(strength = "75", quantity = "2", subscription = "6"),
        ProductVariant(strength = "75", quantity = "2", subscription = "9"),
        ProductVariant(strength = "75", quantity = "2", subscription = "12"),
        ProductVariant(strength = "75", quantity = "4", subscription = "1"),
        ProductVariant(strength = "75", quantity = "4", subscription = "3"),
        ProductVariant(strength = "75", quantity = "4", subscription = "6"),
        ProductVariant(strength = "75", quantity = "4", subscription = "9"),
        ProductVariant(strength = "75", quantity = "4", subscription = "12"),
        ProductVariant(strength = "75", quantity = "6", subscription = "1"),
        ProductVariant(strength = "75", quantity = "6", subscription = "3"),
        ProductVariant(strength = "75", quantity = "6", subscription = "6"),
        ProductVariant(strength = "75", quantity = "6", subscription = "9"),
        ProductVariant(strength = "75", quantity = "6", subscription = "12"),
        ProductVariant(strength = "75", quantity = "8", subscription = "1"),
        ProductVariant(strength = "75", quantity = "8", subscription = "3"),
        ProductVariant(strength = "75", quantity = "8", subscription = "6"),
        ProductVariant(strength = "75", quantity = "8", subscription = "9"),
        ProductVariant(strength = "75", quantity = "8", subscription = "12"),
        ProductVariant(strength = "75", quantity = "10", subscription = "1"),
        ProductVariant(strength = "75", quantity = "10", subscription = "3"),
        ProductVariant(strength = "75", quantity = "10", subscription = "6"),
        ProductVariant(strength = "75", quantity = "10", subscription = "9"),
        ProductVariant(strength = "75", quantity = "10", subscription = "12"),
        ProductVariant(strength = "75", quantity = "12", subscription = "1"),
        ProductVariant(strength = "75", quantity = "12", subscription = "3"),
        ProductVariant(strength = "75", quantity = "12", subscription = "6"),
        ProductVariant(strength = "75", quantity = "12", subscription = "9"),
        ProductVariant(strength = "75", quantity = "12", subscription = "12"),
        ProductVariant(strength = "75", quantity = "14", subscription = "1"),
        ProductVariant(strength = "75", quantity = "14", subscription = "3"),
        ProductVariant(strength = "75", quantity = "14", subscription = "6"),
        ProductVariant(strength = "75", quantity = "14", subscription = "9"),
        ProductVariant(strength = "75", quantity = "14", subscription = "12")

>Solution :

val sortedList = list.sortedWith(
  compareBy<ProductVariant> {   // or compareByDescending
    it.strength?.toInt() ?: 0   // or java.lang.Integer.MAX_VALUE
  }.thenBy {                    // or thenByDescending
    it.quantity?.toInt() ?: 0   // or java.lang.Integer.MAX_VALUE
  }
)
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading