Java-Map实现类

  • 内容
  • 评论
  • 相关

Map的常用实现类:

HashMap:     采用哈希表算法, 此时Map中的key不会保证添加的先后顺序,key也不允许重复.

key判断重复的标准是: key1和key2是否equals为true,并且hashCode相等.

TreeMap:      采用红黑树算法,此时Map中的key会按照自然顺序或定制排序进行排序,,key也不允许重复.

key判断重复的标准是: compareTo/compare的返回值是否为0.

LinkedHashMap:  采用链表和哈希表算法,此时Map中的key会保证先后添加的顺序,key不允许重复.

key判断重复的标准和HashMap中的key的标准相同.

Hashtable:     采用哈希表算法,是HashMap的前身(类似于VectorArrayList的前身).打死不用.

在Java的集合框架之前,表示映射关系就使用Hashtable.

所有的方法都使用synchronized修饰符,线程安全的,但是性能相对HashMap较低.

Properties:     Hashtable的子类,此时要求keyvalue都是String类型.

用来加载资源文件(properties文件(IO再讲)).

--------------------------------------------------------------------------------------

一般的,我们定义Map,key都使用不可变的类(String),把key作为value的唯一名称.

--------------------------------------------------------------------------------------

HashMap和TreeMap以及LinkedHashMap都是线程不安全的,但是性能较高:

解决方案: Map m = Collections.synchronizedMap(Map对象);

Hashtable类实现线程安全的,但是性能较低.

哈希表算法:做等值查询最快.

数结构算法:做范围查询最快-->应用到索引上.

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注