我正在编写简单的图书管理(图书馆)应用程序,但是我对正确的数据表示感到困惑。
我有类似的课程:
Book (isbn, author, title, libraryIdNumber)
BookDatabase (collection of Books)
在此示例中,BookDatabase内部的主要数据结构是
Map<Integer, Book> booksById;
其中key是该书的唯一库标识符(例如,增量int值),而该值只是Book实例。
现在很容易通过ID查找书籍,但是很难找到所有具有相同标题的书籍。所以我需要另一个数据结构
Map<String, List<Book>> booksByTitle;
其中的键是书名,而值是图书馆中所有具有此书名的书的列表(例如“狮子王”的10个副本)。
我知道最好的存储此类数据的方法就是数据库,但问题是更笼统的:
是否可以将相同的数据存储在一个存储类中的许多数据结构中,还是内存效率低下?还是最好在实际需要时获取数据的其他表示形式(例如,通过调用Map.values()方法)?
您认为在这种情况下最好的方法是什么?
最佳答案
是否可以将相同的数据存储在一个存储类中的许多数据结构中,还是内存效率低下?
是。您只需将引用复制到您的Book对象,而不是实际的Book对象本身-这样就可以节省内存。
附言没错,数据库会更好:例如,它使查询非常容易。