gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:35:26 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com