Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要找到一个合适的数据结构_Java_Algorithm - Fatal编程技术网

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