ContentValues和HashMap之间的区别?

时间:2014-12-24 15:11:13

标签: android

ContentValuesHashMap之间有什么区别?如果存在差异,那么描述它的最佳类比是什么?

2 个答案:

答案 0 :(得分:9)

1) HashMap是一个常规实用工具类,位于java.util。另一方面,ContentValuesandroid.content中的特定类{3}}旨在符合Android SQLiteDatabaseContentResolver

注意等类别,他们根据上述指定实施不同的界面:
- HashMap实施CloneableSerializable
- ContentValues实施Parcelable

2) ContentValues的成员HashMapString个键:

   private HashMap<String, Object> mValues

3) ContentValues有许多获取和输入类型值的方法(如getAsFloat()等)

结论
您可以将ContentValues视为HashMap的包装来存储类型值,通常与Android SQLiteDatabaseContentResolver一起存储。
那就是

答案 1 :(得分:1)

首先看下面链接

中ContetntValue.java类的soruce代码

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/content/ContentValues.java

如您所见,此类具有哈希映射变量(mValues),几乎所有方法都可以使用它。例如,当您创建ContentValue的对象时,您调用ContentValue构造函数,并且在此构造函数中,mValue对象已在第52行中创建:

  

public ContentValues(int size){           mValues = new HashMap(size,1.0f);       }

或者当你通常调用contentValue对象的put方法时,你将值放在HashMap对象(mValues)中,例如第95行:

  

public void put(String key,String value){           mValues.put(key,value);       }

那么为什么要使用ContentValue?!! ContentValue有一些有用的方法,可以更好地处理像ContentResolver这样的东西。最重要的方法之一是writeToParcel():

  

writeToParcel(Parcel parcel,int flags)

你可以在Android文档中阅读所有这些方法:

http://developer.android.com/reference/android/content/ContentValues.html

希望这条评论可以帮助你,并抱歉我的英语不好。