我正在编写简单的图书管理(图书馆)应用程序,但我对正确的数据表示有所了解。
我有类似的课程:
Book (isbn, author, title, libraryIdNumber)
BookDatabase (collection of Books)
在此示例中,BookDatabase中的主要数据结构是
Map<Integer, Book> booksById;
其中key是书籍的唯一库标识符(例如增量int值),值只是Book实例。
现在很容易通过ID找到一本书,但很难找到所有具有相同标题的书籍。所以我需要另一种数据结构,如
Map<String, List<Book>> booksByTitle;
其中键是书的标题,值是图书馆中具有此标题的所有书籍的列表(例如,#34;狮子王和#34的10份副本)。
我知道存储此类数据的最佳方式只是数据库,但问题更为笼统:
是否可以将相同的数据存储在一个存储类中的许多数据结构中,或者内存效率低下?或者最好在实际需要时获得额外的数据表示(例如通过调用Map.values()方法)?
在您看来,这种情况下最好的方法是什么?
答案 0 :(得分:1)
在一个存储类中的许多数据结构中存储相同的数据是否可以,或者内存效率低?
是。您只是复制对Book对象的引用,而不是实际的Book对象本身 - 因此它具有内存效率。
P.S。你是对的,数据库会更好:例如,它使查询变得非常简单。