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
类中放置三个字符串成员。我觉得您的解释很有说服力。非常感谢。