Java 我需要找到一个合适的数据结构
我不确定应该用什么数据结构来解决它, 我有一个类别列表和与之相关的值列表,如下所示:Java 我需要找到一个合适的数据结构,java,algorithm,Java,Algorithm,我不确定应该用什么数据结构来解决它, 我有一个类别列表和与之相关的值列表,如下所示: Categories Values Smart **person1**,person2 Handsome person3,person6,**person1** Hard-Working person7,person9 例如,person1既聪明又英俊,因为他既英俊又聪明。(一个价值观(人)可以分为许多类别)而人2聪明但不英俊 pers
Categories Values
Smart **person1**,person2
Handsome person3,person6,**person1**
Hard-Working person7,person9
例如,person1既聪明又英俊,因为他既英俊又聪明。(一个价值观(人)可以分为许多类别)而人2聪明但不英俊
person对象具有名称、年龄和性别,例如person 1是
John 43 Male
我想知道如何设计它,我正在考虑一个二维阵列,但这不是一个好主意,因为我会有一些空闲的地方
Cat1 v3,v6 Spare Spare
Cat2 v10 Spare Spare Spare
cat4 v6,v7,v8,v9
我认为最好是有一个列表,但是不确定如何找出哪个值是哪个类别或多个类别的值(如上面示例中与cat1和cat4关联的V6)
你可以用像这样的东西
Map
由于Map
应该提供O(1)访问权限,因此您希望您的密钥是用于查找最多内容的密钥(根据我收集的信息,在您的案例中是类别)。所以如果你有
Map categoryLookup=newhashmap()代码>
你能行
List values=myCategoryLookup.get(someCategory)代码>
然后对这些值进行迭代。对同一个值的引用可以在多个列表中——这不是问题
对于下面的Yameo,如果您想获得某个人的类别,您可以
让人员
维护其类别列表
“反转”上述数据结构;i、 e.同时维护地图
这些解决方案的替代方案是设置类别
和个人
类本身的关系。例如,Person
将有一个List
作为其类属性之一,类似地,Category
将有一个List
作为其类属性之一。但我感觉这更像是一个数据结构问题。如果您有一个包含实际数据的数据库,并且打算使用ORM工具将数据映射到Java类,那么您可能会这样做
Map
由于Map
应该提供O(1)访问权限,因此您希望您的密钥是用于查找最多内容的密钥(根据我收集的信息,在您的案例中是类别)。所以如果你有
Map categoryLookup=newhashmap()代码>
你能行
List values=myCategoryLookup.get(someCategory)代码>
然后对这些值进行迭代。对同一个值的引用可以在多个列表中——这不是问题
对于下面的Yameo,如果您想获得某个人的类别,您可以
让人员
维护其类别列表
“反转”上述数据结构;i、 e.同时维护地图
这些解决方案的替代方案是设置类别
和个人
类本身的关系。例如,Person
将有一个List
作为其类属性之一,类似地,Category
将有一个List
作为其类属性之一。但我感觉这更像是一个数据结构问题。如果您有一个包含实际数据的数据库,并且打算使用ORM工具将数据映射到Java类,您可能会这样做。在数据库中,您将使用。另见。根据需要,可以使用enum
作为类别,使用MultiMap
作为存储。另见。根据您的需要,您可以使用enum
作为类别,使用MultiMap
作为存储。谢谢您的回复,您有什么例子吗?@sirinva Reddy Thatiparthy,您所说的集合是什么意思我从未听说过是的,Yarneo是对的,我应该有一个灵活的数据结构,因为我可能需要知道,例如,谁是大多数类别中的一员?谁不属于任何类别或仅属于一个类别?@hvgotcodes感谢您的回答,但您能给我更多的例子吗?或者如果您知道教程,请与我分享,我应该使用HashMap还是Map?以及如何找到类别中某个值的出现次数?@Eme您需要做一些阅读。Map是一个接口,HashMap是Map的一种……感谢您的回复,您有任何例子吗?@Sirivar Reddy Thatiparthy,您所说的集合是什么意思我从未听说过是的Yarneo是对的,我应该有一个灵活的数据结构,因为我可能需要知道,例如,大多数类别中的谁是?谁不属于任何类别或仅属于一个类别?@hvgotcodes感谢您的回答,但您能给我更多的例子吗?或者如果您知道教程,请与我分享,我应该使用HashMap还是Map?以及如何找到类别中某个值的出现次数?@Eme您需要做一些阅读。Map是一个接口,HashMap是Map的一种类型……在上面的示例中,v3和Spare是什么?他们是那个人吗?这是家庭作业吗?如果是,请将其标记为such@hvgotcodes,不,不是,但我是新手,正试图了解更多,这就是为什么我询问差异的原因,否则我只会解决问题,而不是学习。@hvgotcodes,你是对的,它的数据结构问题,我想知道哪个数据结构最适合这个问题,我需要解决的问题是,哪些人与每个类别相关联?(给出类别以获取人员)或者哪个人与哪个类别相关联?(给出此人并获取其关联的类别列表)与每个类别关联的人数,…在上面的示例中,v3和备用是什么?他们是那个人吗?这是家庭作业吗?如果是,请将其标记为such@hvgotcodes,不,不是,但我是新手,正试图了解更多,这就是为什么我询问差异的原因,否则我只会解决问题,而不是学习。@hvgotcodes,你是对的,它的数据结构
V3 v6 v7 v8 v9 v10