多种数据结构中的相同数据 - 正确的方法

时间:2014-07-29 20:41:32

标签: java data-structures collections map

我正在编写简单的图书管理(图书馆)应用程序,但我对正确的数据表示有所了解。

我有类似的课程:

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()方法)?
在您看来,这种情况下最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

  

在一个存储类中的许多数据结构中存储相同的数据是否可以,或者内存效率低?

是。您只是复制对Book对象的引用,而不是实际的Book对象本身 - 因此它具有内存效率。

P.S。你是对的,数据库会更好:例如,它使查询变得非常简单。