【问题标题】:The same data in multiple data structures - the right approach多个数据结构中的相同数据 - 正确的方法
【发布时间】:2014-07-29 20:41:31
【问题描述】:

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

我有这样的课程:

Book (isbn, author, title, libraryIdNumber)  
BookDatabase (collection of Books)  

在这个例子中,BookDatabase 中的主要数据结构是一个

Map<Integer, Book>  booksById;

其中 key 是图书的唯一库标识符(例如增量 int 值),该值只是 Book 实例。
现在很容易通过 ID 找到一本书,但很难找到所有同名的书。所以我需要另一个数据结构,比如

Map<String, List<Book>> booksByTitle;

其中key为书名,value为图书馆内所有同名图书的列表(例如10本《狮子王》)。

我知道存储此类数据的最佳方式就是数据库,但问题更笼统:
可以将相同的数据存储在一个存储类中的多个数据结构中还是内存效率低下?或者,在实际需要时(例如通过调用 Map.values() 方法)获取数据的其他表示可能会更好?
您认为在这种情况下最好的方法是什么?

【问题讨论】:

  • 对于 booksByTitle,您可以使用 multimap
  • 是的,我读过它,但在这种情况下,问题是关于 java 集合框架的。谢谢!

标签: java data-structures collections map


【解决方案1】:

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

是的。您将只是复制对 Book 对象的引用,而不是实际的 Book 对象本身——因此它是内存高效的。

附:您说得对,数据库会更好:例如,它使查询变得非常容易。

【讨论】:

    猜你喜欢
    • 2020-05-18
    • 1970-01-01
    • 2013-01-04
    • 2022-12-06
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    相关资源
    最近更新 更多