在某些情况下,我当时接受了手术,
我们可以使用 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(List
、Map
、Set
)来存储具有相似特征的对象,这就是泛型存在的原因。因此,使用 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/