首页 > 解决方案 > 比较器以错误的顺序提供数据

问题描述

我有一个名为 classWiseArrayList 的 Pojo 对象的 ArrayList。Pojo Object 的一个领域是平均的。我需要按升序显示数组列表。

这是我的 Pojo 课程

data class ClassWiseData(
        @SerializedName("class_id")
        @Expose
        val classId: String? = null,
        @SerializedName("class_code")
        @Expose
        val classCode: String? = null,
        @SerializedName("average")
        @Expose
        val average: String? = null)

这是我的代码

 classWiseArrayList.sortWith(
                Comparator { o1, o2 -> o1?.average!!.compareTo(o2?.average!!) })
            

当没有一个平均值等于 100 时,排序工作正常,但如果平均值之一是 100,则 100 平均值位于顶部而不是底部。

我在做什么错?

标签: javaandroidarraylistkotlincomparator

解决方案


您不能使用字符串比较来比较数字(例如“86”按字母顺序高于“100”)。尝试将平均值转换为数字(即 Int)并改用一些数字比较器。

例如:

listOf<ClassWiseData>().sortedBy { it.average?.toIntOrNull() }

推荐阅读