在Java和Android中,哪个HashMap比POJO(Getter Setter,Model Class)更好
在某些情况下,我当时接受了手术 我们可以同时使用HashMap或Model类(POJO)作为ArrayList泛型,如在Java和Android中,哪个HashMap比POJO(Getter Setter,Model Class)更好,java,android,data-structures,hashmap,Java,Android,Data Structures,Hashmap,在某些情况下,我当时接受了手术 我们可以同时使用HashMap或Model类(POJO)作为ArrayList泛型,如ArrayList()或ArrayList() 你能建议我哪一个作为记忆的观点和表现更好 我知道两者都是比较好的选择,但我只是想知道我是否有选择同时选择两者。。。。哪一个更好 e、 g。 假设我有2个变量,它们都是POJO类中的字符串,对于HashMap都是相同的 所以我们有一个列表对象,比如 final ArrayList<Abc> listAbc = new
ArrayList()或ArrayList()
你能建议我哪一个作为记忆的观点和表现更好
我知道两者都是比较好的选择,但我只是想知道我是否有选择同时选择两者。。。。哪一个更好
e、 g。
假设我有2个变量,它们都是POJO类中的字符串,对于HashMap都是相同的
所以我们有一个列表对象,比如
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);
}
final ArrayList listAbc=new ArrayList();
对于(final int i=0;i通常使用集合(List
,Map
,Set
)为了存储具有相似特征的对象,这就是泛型存在的原因。因此,使用映射
来存储多个类的对象会迫使您在获取对象时强制转换存储的每个对象,这不是我们可以编写的最干净的代码。此外,即使使用哈希映射
,也可以使用轻松获取对象de>hashCode
值,访问速度比访问Java Bean属性慢…而且您必须始终确保这些对象具有良好的hashCode()
生成器。但无论如何,我无法想象这何时会成为常规应用程序性能的瓶颈
因此,我的建议是,每次在编译时知道要存储多少属性及其类时,都使用JavaBean,使用映射来存储同一类的元素
例如,如果您有一个包含用户的DB表,并且希望“缓存”用户以快速访问其中任何一个用户,则可以执行以下操作:
class User {
long id;
String name;
... //other attributes
//setters and getters
}
Map<Integer, Model> m = new HashMap<Integer, Model>();
然后将其存储在地图中,以便通过其id快速访问:
Map<Long,User> usersMap= new HashMap<>();
...
usersMap.put(user.getId(),user);
Map usersMap=newhashmap();
...
usersMap.put(user.getId(),user);
我假设快速查找不是您的用例,因为您使用Map的方式无法在O(1)中按名称查找
另外,为要存储的每个名称=值对条目创建一个新映射也是浪费空间
我更愿意建议,如果您有一些唯一的键可用(比如整数Id),那么将您的结构存储在如下哈希映射中:
class User {
long id;
String name;
... //other attributes
//setters and getters
}
Map<Integer, Model> m = new HashMap<Integer, Model>();
Map m=newhashmap();
现在,它可以用于快速查找,也可以存储模型的所有属性;方法。这取决于您的用例。请解释您所问的具体任务不清楚。HashMap和POJO是不可比较的。请用您的用例详细说明这个问题。如果您担心POJO/Bean与Map的比较性能,而不是您最可能想到的,那么我认为您指的是Java Bean而不是POJO它们唯一的共同属性是允许存储和访问多个属性/值对。它们以不同的方式存储这些“对”,因此内存消耗和访问性能会有所不同。您应该阅读(哈希)映射及其内部工作方式。然后,您可能会意识到,映射性能将取决于您在映射中输入的实际键……那么,除了多个基本属性(就像我们在POJO中看到的那样),您只有一个属性,即列表映射的映射?我想这回答了我的问题: