小编dre*_*our的帖子

基于字符串日期时间对 List<T> 进行排序

我想根据字符串形式的 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)

但仍按降序排序未按预期工作

kotlin

1
推荐指数
1
解决办法
812
查看次数

使用 Java var 关键字的缺点

一位演讲者刚刚提到更改为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涉及更多步骤?)除此之外,是否还有其他非技术影响(例如,我看到了一个关于离线代码审查清晰度的有趣评论)

java jvm bytecode

0
推荐指数
1
解决办法
240
查看次数

标签 统计

bytecode ×1

java ×1

jvm ×1

kotlin ×1