HashMap是基于哈希表的Map接口实现的,存储的是键值对。它所提供所有可选的映射操作。并允许使用null值和null键,但不保证映射的顺序。HashMap是基于HashCode的,若想正确使用它就需要重写hashcode()和equals()方法。HashMap不是线程安全的,若要线程安全,可用:
Map m = Colletions.synchronizedMap(new HashMap( ));
HashMap键是唯一的,值是可以重复的。
HashSet实现了Set接口,存储的是对象。按照哈希算法来存取容器中的对象,具有很好的存取和查找性能。当想容器中加入一个对象时,HashSet会调用该对象的hashCode()方法来获取哈希码,然后根据这个哈希码进一步计算出对象在这个容器中的计算位置。不允许集合中有重复的值。HashSet 是线程不安全的。
线程安全的有:Vector、HashTable、Proprties
线程不安全的有:HashSet、TreeSet、HashMap、TreeMap、ArrayList、LinkedList.