java - 哪种数据结构来存储共同作者?

标签 java data-structures graph jung

我有一个作者列表,其中包含书名和出版年份,例如:

Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowbeer、David Holmes、Doug Lea:Java 并发实践,2006 年

Ken Arnold、James Gosling 和 David Holmes:Java 编程语言,2005 年

...

我想知道哪种数据结构最适合存储有关共同作者、他们一起撰写的书籍以及出版年份的信息。

我想稍后使用这些信息来绘制图表(在 JUNG 中,我使用的是 java),其中每个作者将是节点,边缘将是他们共同创作的每本书。每年都会绘制单独的图表。我正在考虑使用多重映射:

Map<Year, Map<Author, List<Map<Co-author, Title>>>>

但这也许过于复杂了?

预先感谢您的帮助。

最佳答案

如何将一组作者和标题放入一个对象中,例如命名为“Book”?这样,您的数据结构就可以很简单

class Book {
    List<Author> authors;
    Title title;
}

Map<Year, Set<Book>> booksInYears

图形绘制算法可以这样工作:

for (Book book : booksInYears.get(aYear)) 
    for (Author author1 : book.authors) 
        for (Author author2 : book.authors) 
            if (author1 != author2) 
                drawEdge(author1, author2, book.title);

drawEdge 方法将首先检查两位作者是否已经绘制了相应的节点(例如使用包含已绘制节点的作者的集合,或者可能是一个 Author => Node 映射)并绘制所需的节点,然后在它们之间画一条边。

关于java - 哪种数据结构来存储共同作者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7952378/

相关文章:

testing - QuickCheck:生成平衡样本的嵌套数据结构的任意实例

java - 同时进行字段验证

java - 无法解析 Maven 依赖项 : ruled out proxy cause

java - Java 中的 JSON 解析和数据操作

java - 是先学数据结构和算法还是先学Java?

java - 从网站中提取 Applet 的源文件

python - Ruby 或 Python 中的财务图表/图形

java - 复制图形节点以制作节点网络的全新复制

java - JPA 存储库 '[X]' 操作上的 key '[Y]' 重复条目 'save'。保存的实体已定义其键

java - 每次通过后如何打印剩余的数据?