Java 存储合作作者身份的数据结构是什么?

Java 存储合作作者身份的数据结构是什么?,java,data-structures,graph,jung,Java,Data Structures,Graph,Jung,我有一份有书名和出版年份的作者名单,例如: Brian Goetz,Tim Peierls,Joshua Bloch,Joseph Bowbeer,David Holmes,Doug Lea:Java并行实践,2006 KenArnold,James Gosling和David Holmes:Java编程语言,2005 。。。 我想知道什么样的数据结构最适合存储关于合著者、他们一起写的书以及出版年份的信息 我想稍后使用这些信息来绘制图(在中,我使用java),其中每个作者都是节点,边是他们共

我有一份有书名和出版年份的作者名单,例如:

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

KenArnold,James Gosling和David Holmes:Java编程语言,2005

。。。

我想知道什么样的数据结构最适合存储关于合著者、他们一起写的书以及出版年份的信息

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

Map<Year, Map<Author, List<Map<Co-author, Title>>>>
Map
但也许这太复杂了


提前感谢您的帮助

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

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

Map<Year, Set<Book>> booksInYears

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

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

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

Map<Year, Set<Book>> booksInYears

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

我认为这样构造数据是个坏主意,为什么不使用多态性概念呢

为什么不创建
类书
,其中包含诸如出版年份、名称等内容。。
而不是创建另一个实体,例如
类Author
,并在这两本书之间构建
列表
共同作者,而Author可以包含
列表
我认为这样构造数据是个坏主意,为什么不使用多态性概念呢

为什么不创建
类书
,其中包含诸如出版年份、名称等内容。。
然后创建另一个实体,例如
类Author
,并在两个书之间构建
列表
共同作者,而Author可以包含
列表

,只需从中创建一个JUNG图即可;JUNG将处理数据结构。也就是说,节点将是作者,边将是合著者关系(这将包括有关作品的信息)


这是说,在过去使用共同作者图时,你可能想考虑合作图的更自然的表示,如二部图(作者VS Works)或超图。这样,您就不需要重复多次表示工作。

只需从中创建一个JUNG图;JUNG将处理数据结构。也就是说,节点将是作者,边将是合著者关系(这将包括有关作品的信息)

这是说,在过去使用共同作者图时,你可能想考虑合作图的更自然的表示,如二部图(作者VS Works)或超图。这样,您就不需要重复多次表示工作