Map主要用于存储键值对,根据键得到值,因此不允许键重复,但允许值重复。
一. HashMap
HashMap比较常用,它根据键的值HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。遍历时,取得的数据的顺序完全是随机的。
HashMap最多只允许一条记录的键为null;允许多条记录的值为null。
HashMap不支持线程的同步(即任意时刻可以有多个线程写HashMap),可能会出现数据不一致,如果需要同步,可以用collections的synchronizedMap方法使HashMap具有同步能力,或者使用ConcurrentHashMap。
HashTable与HashMap类似,它继承自Dictionary类。不同的是:它不允许记录的键或者值为空;它支持线程的同步(即任意一个时刻只能有一个线程写HashTable),因此也会导致HashTable在写入时比较慢。
二. LinkedHashMap
LinkedHashMap保存了记录的插入顺序,在使用iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。也可以在构造时带上参数,按照应用次序排序。
在遍历时会比HashMap