HashMap、HashTable、LinkedHashMap和TreeMap的用法和区别

时间:2022-10-12 19:14:26

java为数据结构中的映射定义了一个接口java.util.map,他有四个实现类  分别是HashMap、HashTable、LinkedHashMap和TreeMap。

Map集合

  存放元素:键值对(也叫名值对

  限制条件: value可以重复,key不可以重复(若重复:后面的覆盖前面的)

        Map集合中key是最主要的,所以一般不会选择整数来作为键(因为整数没有很好的描述当前值)

  根据键得到值(get(key)方法)

1)HashMap  最常用的Map 

  特点:1.键不能重复  2.结果无序  3.查重规则是hashCode和equals  4.不支持线程同步

  (如果需要同步,可以用Collections.synchronizedMap(HashMap map)方法使HashMap具有同步能力)

2)Hashtable

  Hashtable与HashMap区别:

    HashMap集合中的值可以为null(数量不限),键可以为null(最多一个,规则??),不支持线程同步

    Hashtable集合中的键或者值都不能为null(规则??), 支持线程的同步(即任意时刻只有一个线程能写Hashtable),写入速度较慢

3)LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定先插入的(插入有序,那么可以普通for循环遍历吗),在遍历时,速度会比HashMap还要慢。有HashMap的全部特性

4)TreeMap

  特点:1.键不能重复  2.结果有序(从小到大)  3.排序规则是比较器