Java - 使用 HashMap 与使用单独的类存储名称字段

标签 java

如果我需要捕获一个人的名字(名字、中间名和姓氏),我想到了以下可能性:

  1. 使用 Map<String, String>姓名;
  2. 使用单独的 Name 类。

如果我使用 map ,我可以像这样存储名称:

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.
}

如果我使用 Name 类,我可以像这样存储:

class Name
{
    String first;
    String middle;
    String last;
    //Below write setters and getters for them.
}

然后在 Person 类中:

class Person
{
   Name name;
   //below write setter and getter for it.
}

我想知道哪一种是更好的做法以及原因。另外如果还有其他更好的方法可以做到这一点。

最佳答案

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

关于Java - 使用 HashMap 与使用单独的类存储名称字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40048274/

相关文章:

java - 如果 java "run everywhere"为什么有适用于 Windows 的 eclipse/netbeans 版本

java - 如何迭代 Flux 并与 Mono 混合

java - 如何在 Qt for android 中保持屏幕打开?

java - 从响应实体 json 获取一个字段

java - 如何实现可变元素数组

java - 有灵活的 Android 广告提供商吗?

java - 复制二维数组 - 仍然使用引用?

java - HIbernate 一对一注释不会在从属表中生成外键 GerericGenerator

java - 按 Java 8 中可比较的 Bean 属性排序

java - 谷歌健身 : What is DataType Floor of Google Fit.