List,Set,Map集合格納null解析およびHashMap,Hashtable異同点解析
1998 ワード
1.List、Set、Mapセットはnull解析を格納する:
このことから、Listセットはnullを格納し、いくつか追加し、いくつか格納することができる.
Setセットはnullを格納することもできるが、1つしか格納できず、複数追加しても1つしか格納できない.
HashMapはnullキー値ペアを格納することができ、キーと値はnullであってもよいが、追加したキー値ペアのキーが同じであれば、後に追加したキー値ペアは前のキー値ペア、すなわち後に格納したキー値ペアを上書きする.
Hashtableはnullに触ってはいけません.値もキーもnullを見るとポインタが空になります.
2.HashMap、Hashtable異同点
同じ点:両方ともMapインタフェースを実現
異なる点:1 HashMapはnullキー値ペアを格納することができ、Hashtableはnullキー値ペアを格納することができない.
②HashMapは非synchronizedであり、Hashtableはsynchronizedである.Sychronizedは、Hashtableを変更できるスレッドが1つしかないことを意味します.つまり、どのスレッドもHashtableを更新する場合はまず同期ロックを取得し、他のスレッドは同期ロックが解放されてから再び同期ロック更新Hashtableを取得する必要があります.すなわち、Hashtableはスレッドが安全であり、複数のスレッドが1つのHashtableを共有することができる.正確な同期がなければ、複数のスレッドはHashMapを共有できません.Hashtableはスレッドが安全でsynchronizedであるため、単一スレッド環境ではHashMapよりも遅い.同期が不要で単一スレッドのみが必要な場合は、HashMapを使用するとHashtableよりもパフォーマンスが向上します.Java 5は、HashTableの代わりに、HashTableの拡張性よりも優れたConcurrentHashMapを提供します.したがって、完全に安全なスレッドが必要な場合は、HashtableまたはConcurrentHashMapを使用する必要があります.
@Test
public void CollectionTest() {
// List
List
このことから、Listセットはnullを格納し、いくつか追加し、いくつか格納することができる.
Setセットはnullを格納することもできるが、1つしか格納できず、複数追加しても1つしか格納できない.
HashMapはnullキー値ペアを格納することができ、キーと値はnullであってもよいが、追加したキー値ペアのキーが同じであれば、後に追加したキー値ペアは前のキー値ペア、すなわち後に格納したキー値ペアを上書きする.
Hashtableはnullに触ってはいけません.値もキーもnullを見るとポインタが空になります.
2.HashMap、Hashtable異同点
同じ点:両方ともMapインタフェースを実現
異なる点:1 HashMapはnullキー値ペアを格納することができ、Hashtableはnullキー値ペアを格納することができない.
②HashMapは非synchronizedであり、Hashtableはsynchronizedである.Sychronizedは、Hashtableを変更できるスレッドが1つしかないことを意味します.つまり、どのスレッドもHashtableを更新する場合はまず同期ロックを取得し、他のスレッドは同期ロックが解放されてから再び同期ロック更新Hashtableを取得する必要があります.すなわち、Hashtableはスレッドが安全であり、複数のスレッドが1つのHashtableを共有することができる.正確な同期がなければ、複数のスレッドはHashMapを共有できません.Hashtableはスレッドが安全でsynchronizedであるため、単一スレッド環境ではHashMapよりも遅い.同期が不要で単一スレッドのみが必要な場合は、HashMapを使用するとHashtableよりもパフォーマンスが向上します.Java 5は、HashTableの代わりに、HashTableの拡張性よりも優れたConcurrentHashMapを提供します.したがって、完全に安全なスレッドが必要な場合は、HashtableまたはConcurrentHashMapを使用する必要があります.