Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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-使用hashmap和使用Separate类存储名称字段_Java - Fatal编程技术网

Java-使用hashmap和使用Separate类存储名称字段

Java-使用hashmap和使用Separate类存储名称字段,java,Java,如果我需要捕捉一个人的名字(第一个、中间和最后一个),我会考虑以下可能性: 使用地图名称 使用单独的名称类 如果我使用地图,我可以像这样存储名称: name.put("first", "xyz") name.put("middle", "abc") name.put("last", "nhf"); 然后在Person类中: class Person { Map<String, String> name; //below write setter and getter f

如果我需要捕捉一个人的名字(第一个、中间和最后一个),我会考虑以下可能性:

  • 使用
    地图
    名称
  • 使用单独的名称类
  • 如果我使用地图,我可以像这样存储名称:

    name.put("first", "xyz")
    name.put("middle", "abc")
    name.put("last", "nhf");
    
    然后在Person类中:

    class Person
    {
       Map<String, String> name;
       //below write setter and getter for it.
    }
    
    class Person
    {
       Name name;
       //below write setter and getter for it.
    }
    
    然后在Person类中:

    class Person
    {
       Map<String, String> name;
       //below write setter and getter for it.
    }
    
    class Person
    {
       Name name;
       //below write setter and getter for it.
    }
    

    我想知道哪种方法更好,为什么。另外,如果还有其他更好的方法,也可以这样做。

    与创建名称类相比,创建映射相当耗费内存

    最好创建name类(一方面,代码行更少:p),主要是因为它不像map那样在运行中容易更改


    映射中的条目可能在运行时意外更改,这可能会导致问题。如果Name类没有setter,那么就不会发生这种情况。

    这完全取决于您——这里没有“最佳”答案。这取决于你如何使用这个类

    通常,您不希望在这样的地图中隐藏东西。它需要做更多的工作来确保事情是正确的。如果您不小心在地图中添加了错误的关键点,该怎么办?使用这种方法,您的数据结构可能会很容易失控

    就我个人而言,我很可能只是直接在
    Person
    类上有3个值,而不必为
    Name
    类或
    Map
    操心


    我再次使用“最有可能”和“一般”这样的词,因为我不知道类是如何使用的。

    Map
    s非常灵活。也就是说,如果你不知道你将拥有什么样的钥匙。例如,如果一个人将有一个教名,另一个人将有一个昵称,第三个人将有父系和母系姓氏,
    Map
    可能有意义。在您的示例中,每个人都有一个名字、中间名和姓氏(尽管其中一些可能是
    null
    ?),因此映射只会增加冗余的复杂性(如线程中所述,内存消耗)。坦白地说,除非您对整个
    名称作为对象有特殊用途(例如,将其用作地图中的键),否则我将直接在
    Person
    类中放置三个字符串成员。

    我觉得您的解释很有说服力。非常感谢。