gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:44:54 24 4
gpt4 key购买 nike

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

我们可以使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com