按值对象成员排序映射

时间:2014-05-18 13:58:40

标签: java algorithm sorting data-structures map

我有一个定义的通用Map

Map<Integer, Book> bookCollection

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

如何对Map进行排序,以便Book的publication对象按照Book的publicationYear成员的顺序排列。因此,如果我遍历排序的地图,那么最旧的书籍首先出现在最新的书籍中。

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

2 个答案:

答案 0 :(得分:1)

publicationYear必须是密钥的一部分。基于此排序。

答案 1 :(得分:1)

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

例如,您可以使用HashMap<Integer, Book>来快速查找ID。您还可以按要求的顺序拥有TreeSet<Book>。如果图书不是Comparable,并且您需要使用密钥,请使用Comparator<Book>创建TreeSet

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