ContentValues、HashMapとHashTableの区別¶
ContentValuesとHashTable¶
両者の最大の違いはcontenvaluesKeyがStringタイプ、valuesが記憶の基本的なタイプのデータ、たとえばstring,intとか,などなど、ストレージの対象にできない。ContentValuesは常用データベースの操作。 (两者最大的区别就在于,contenvalues Key只能是String类型,values只能存储基本类型的数据,像string,int之类的,不能存储对象这种东西。ContentValues 常用在数据库中的操作。) データベース中でデータを挿入する時、まず一つContentValuesの対象: (在往数据库中插入数据的时候,首先应该有一个ContentValues的对象所以:)
1 2 3 4 5 6 7 8 | <pre> <code class="java"> ContentValues values = new ContentValues(); values .put(key,values); SQLiteDataBase sdb ; sdb.insert(database_name,null,initialValues); </code> </pre> |
HashMapとHashTable¶
HashMapはnullをentryのkey or valueすべき、しかし、Hashtableは許可ない。HashMapをHashtableのcontains方法をやめ、containsvalueとcontainsKey。 (HashMap不是线程安全的,HashTable是线程安全的一个Collection。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。) Hashtableから受け継がれDictionaryクラス、そしてHashMapはJava1.2導入のMap interfaceの実現。最大の違いは、Hashtable方法はSynchronize、HashMapじゃない、複数のスレッドHashtable訪問時、自分がいらないでその方法を実現しなければならない同時、HashMapの提供のほか同期。HashtableとHashMap採用のhash / rehashアルゴリズムも大体同じですので、性能は大きな差がある。 (Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。)
プログラムをしようとする多くのkey-value入れHashMap中の場合、下記のコードの断片を例に: (当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:)
1 2 3 4 5 6 7 8 | <pre> <code class="java"> HashMap<String , Double> map = new HashMap<String , Double>(); map.put("语文" , 80.0); map.put("数学" , 89.0); map.put("英语" , 78.2); </code> </pre> |
Hashtableの長所:検索スピードは速くて、像は上記のキーを通じて急速によって探すことを計算、キーの唯一のアドレス(キーが異なる場合)は、そのアドレスとして保管VALUE。 (Hashtable优点:查找速度快,像上面提到的通过KEY快速查找,因为通过KEY会计算一个唯一的地址(KEY不相同的情况下),而那个地址就存放了VALUE。) Hashtableの短所:データ量が大きい時メモリ占用大。 (Hashtable缺点:对数据量大的时候内存占用大。)
使用Hashtableの簡単な例を以下には1、2、3をHashtableの中で、彼らのキーは"one","two","three": (使用Hashtable的简单示例如下,将1,2,3放到Hashtable中,他们的key分别是"one","two","three":)
1 2 3 4 5 6 7 8 | <pre> <code class="java"> Hashtable numbers = new Hashtable(); numbers.put("one", new Integer(1)); numbers.put("two", new Integer(2)); numbers.put("three", new Integer(3)); </code> </pre> |
関連な説明は下記のリンクを参照してください。
1.http://www.apkbus.com/forum.php?mod=viewthread&tid=69126
2.http://blog.csdn.net/caesardadi/article/details/20212231