我有一个定义的通用Map
Map<Integer, Book> bookCollection
Integer是书籍ID,书籍显然是Book对象。 Book对象有一个名为publicationYear的成员。
如何对Map进行排序,以便Book的publication对象按照Book的publicationYear成员的顺序排列。因此,如果我遍历排序的地图,那么最旧的书籍首先出现在最新的书籍中。
目前,地图是随机排序的。
答案 0 :(得分:1)
publicationYear必须是密钥的一部分。基于此排序。
答案 1 :(得分:1)
此类问题的一个解决方案是编写自己的数据结构,该结构使用两个或更多标准数据结构来实现混乱的细节。
例如,您可以使用HashMap<Integer, Book>
来快速查找ID。您还可以按要求的顺序拥有TreeSet<Book>
。如果图书不是Comparable
,并且您需要使用密钥,请使用Comparator<Book>
创建TreeSet
。
复合数据结构的大多数方法都是两行或三行。两个底层结构存在且保持一致的事实对程序的其余部分是隐藏的,它只访问复合结构。