java - 在 Java 和 Android 中,HashMap 与 POJO(Getter Setter,模型类)哪个更好

标签 java android data-structures hashmap

在某些情况下,我当时接受了手术,

我们可以使用 HashMap 或模型类 (POJO) 作为 ArrayList Generic Like ArrayList<HashMap<K,V>>() OR ArrayList<ModelName>() .

从内存角度和性能角度来看,你能建议我哪个更好吗?

我知道两者都更好,但我只想知道我是否可以选择两种选择....哪个更好?

例如 假设我有 2 个变量都是 POJO 类中的字符串,并且都是用于 HashMap 的。

所以我们有列表对象 Like..

  final  ArrayList<Abc> listAbc = new ArrayList<Abc>();

 for(final int i=0;i<2;i++){
    Abc modelAbc = new Abc();
    abc.setName("name");
    abc.setLastName("lastName");
    listAbc.add(modelAbc);
  }

在这种情况下,我必须采用 ABC 类的两个对象,

在带有 List 对象的 HashMap 中,它将...

final ArrayList<HashMap<String,String>> listMap = new ArrayList<HashMap<String,String>>();

for(final int i=0;i<2;i++){
 HashMap<String,String> hashAbc = new HashMap<String,String>();
 hashAbc.put("NAME","firstName");
 hashAbc.put("LASTNAME","lastName");
 listMap.add(hashAbc);
}

在这种情况下,我必须使用 HashMap 的两个对象。

现在告诉我必须使用哪个才能获得更好的性能? 哪个是高内存占用者?

最佳答案

一般来说,你使用Collection(ListMapSet)来存储具有相似特征的对象,这就是泛型存在的原因。因此,使用 Map 来存储多个类的对象会强制您在获取存储的每个对象时强制转换它,这不是我们可以编写的最干净的代码。此外,即使使用 HashMap,其中使用 hashCode 值很容易获取对象,访问速度也比访问 Java Bean 属性慢......确保这些对象具有良好的 hashCode() 生成器。但无论如何,我无法想象这何时会成为常规应用程序的性能瓶颈。

所以我的建议是每次在编译时知道要存储多少属性及其类时使用 Java Bean,使用 Map 存储同一类的元素。

例如,如果您有一个包含用户的数据库表,并且您希望“缓存”用户以便快速访问其中的任何一个,您可以这样做:

class User {
    long id;
    String name;
    ... //other attributes

   //setters and getters
}

然后将它们存储在 Map 中以便通过它们的 id 快速访问它们:

Map<Long,User> usersMap= new HashMap<>();
...
usersMap.put(user.getId(),user);

关于java - 在 Java 和 Android 中,HashMap 与 POJO(Getter Setter,模型类)哪个更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25177379/

相关文章:

java - 发送邮件不起作用并显示异常

java - Tomcat中两个war之间的互通

java - JasperException - 即使存在标记也找不到文件

android - NoSuchMethodError Bundle.getString() 方法

data-structures - 看起来像保龄球瓶的数据结构的名称是什么?

haskell - 用函数替换Haskell记录有什么好处

java - Java 中的错误处理权衡

java - 在应用程序上使用时,对每个 "getKey()"的 Firebase 上的所有数据进行重新分组

java - 在 Android 屏幕的上半部分使用 Canvas 绘制一个圆

c - c中的可用内存问题删除了链表中的某些值