【问题标题】:Sort Map By Value Object Member [duplicate]按值对象成员排序映射[重复]
【发布时间】:2014-05-18 13:58:40
【问题描述】:

我有一个这样定义的通用地图

Map<Integer, Book> bookCollection

Integer 是图书 ID,而 Book 显然是 Book 对象。 Book 对象有一个名为publicationYear 的成员。

如何对 Map 进行排序,以便其 Book 对象按 Book 的 PublicationYear 成员排序。因此,如果我遍历排序后的地图,最旧的书会首先出现,直到最新的书。

目前,地图是随机排序的。

【问题讨论】:

标签: java algorithm sorting data-structures map


【解决方案1】:

publicationYear 必须是键的一部分。以此为基础进行排序。

【讨论】:

  • 谢谢,但我需要作为其他功能的图书 ID 的密钥。
  • @DamienFenton 如果排序键不是映射键的一部分,则无法对映射进行排序。要么在地图键中包含年份,要么使用不同的数据结构。
【解决方案2】:

此类问题的一种解决方案是编写自己的数据结构,使用两个或多个标准数据结构来实现杂乱的细节。

例如,您可以使用HashMap&lt;Integer, Book&gt; 来允许按 ID 快速查找。您还可以按要求的顺序获得TreeSet&lt;Book&gt;。如果 Book 不是 Comparable 和您需要的密钥,请使用 Comparator&lt;Book&gt; 创建 TreeSet

复合数据结构的大多数方法都是两三行长。两个底层结构存在并保持一致这一事实对程序的其余部分隐藏,它只访问复合结构。

【讨论】:

    猜你喜欢
    • 2018-11-14
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多