java - 比较器以错误的顺序提供数据
问题描述
我有一个名为 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 平均值位于顶部而不是底部。
我在做什么错?
解决方案
您不能使用字符串比较来比较数字(例如“86”按字母顺序高于“100”)。尝试将平均值转换为数字(即 Int)并改用一些数字比较器。
例如:
listOf<ClassWiseData>().sortedBy { it.average?.toIntOrNull() }
推荐阅读
- regex - 正则表达式以匹配字符串的变体和左填充零
- php - 通过函数更新变量描述
- c# - 使用匹配和插值在数据表中查找查找值
- mysql - 使用不同的表格日期范围按日期分组
- anylogic - AnyLogic:我如何测量总忙/闲时间?
- json - 解压 API Response,将每个 CSV 读入内存,转换为 JSON 并存储到 S3
- java - 通过 Guice 注入 CompletableFutures
- javascript - 在 Fullcalendar.io 中重叠多日事件而不是堆叠成一行
- javascript - 为什么anime.js不能在我的电脑上运行?
- tsql - 找到一个正在运行的存储过程来杀死它