代码之家  ›  专栏  ›  技术社区  ›  Johann

按降序对对象地图进行排序

  •  0
  • Johann  · 技术社区  · 3 年前

    在科特林,我有一张物体地图。密钥是一个字符串,与密钥一起存储的对象是一个对象。我想按对象中的属性按降序对地图进行排序。在这个例子中,我想按时间戳排序:

    data class Image(val timestamp: Long)
    
    val map = mutableMapOf<String, Image>()
    map.put("a") = 999
    map.put("b") = 555
    map.put("c") = 333
    map.toSortedMap.... Not sure of the rest
    
    

    排序时,项目应按如下方式排列: c、 b,a

    不知道如何实现排序。

    0 回复  |  直到 3 年前
        1
  •  0
  •   Johann    3 年前

    这是有效的。它不会返回映射,而是返回映射项的列表。对于我的样本,它返回:

    List<MutableMap.MutableEntry<String, Int>

    要获得此信息,请拨打:

    map.entries.sortedWith(compareByDescending({ it.value }))

    如果值引用的是对象而不是基本类型(Int、Boolean等),则不会复制对象,而是在返回的列表中仅放置对它们的引用。这意味着该对象将同时存在于返回的列表和原始映射中。若要销毁对象,必须将其从列表和地图中删除。