我想根据字符串形式的 UTC 日期时间对列表进行降序排序。
我的课
data class CartEntity( val itemId: String, var itemName: String, var createdDate: String)
Run Code Online (Sandbox Code Playgroud)
在这个createdDate中是“2020-07-28T14:28:52.877Z”
我尝试过的
const val UTC_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
Collections.sort(list, object : Comparator<CartEntity> {
var f: DateFormat =
SimpleDateFormat(
AppConstants.UTC_FORMAT, Locale.ENGLISH
)
override fun compare(o1: CartEntity?, o2: CartEntity?): Int {
return try {
val firstitem = f.parse(o1?.createdDate!!)
val seconditem = f.parse(o2?.createdDate!!)
firstitem.compareTo(seconditem)
} catch (e: ParseException) {
throw IllegalArgumentException(e)
}
}
})
Run Code Online (Sandbox Code Playgroud)
但仍按降序排序未按预期工作
一位演讲者刚刚提到更改为var是有用的语法糖(对齐变量名称)。我以为我会检查并发现...
List<String> list = new ArrayList<>(); // IMO this is safer future-proof coding
list.add("HELLO WORLD");
Run Code Online (Sandbox Code Playgroud)
... 使用invokeinterface调度生成字节码...
11: invokeinterface #12, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
Run Code Online (Sandbox Code Playgroud)
转换为 Java 10+ var...
11: invokeinterface #12, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
Run Code Online (Sandbox Code Playgroud)
... 使用invokevirtual调度生成字节码...
11: invokevirtual #12 // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
Run Code Online (Sandbox Code Playgroud)
例如,我是否应该关注批量升级整个应用程序的源代码var?例如,敏感部分会更慢(还是更快?!假设invokeinterface涉及更多步骤?)除此之外,是否还有其他非技术影响(例如,我看到了一个关于离线代码审查清晰度的有趣评论)