Life

Friday, September 28, 2018

HashMap与TreeMap有什么区别?

先说相同点:
都实现了Map接口。
HashMap、TreeMap都是非线程安全的。顺便提一下HashTable,它是线程安全的,全,它支持线程的同步,即任一时刻只有一个线程能写Hashtable,然而,这也导致了Hashtable在写入时会比较慢。

不同点:
在性能上,HashMap:适用于在Map中插入、删除和定位元素。TreeMap:适用于按自然顺序或自定义顺序遍历键(key)。 TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用Iteraor遍历TreeMap时,得到的记录是排过序的。
TreeMap的键和值都不能为空。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null。
看一个例子:

package test;

import java.util.Map;
import java.util.TreeMap;

public class TreeMapTest {
      public static void main(String[] args) {
        Map tree = new TreeMap();
        int [] a={9,8,7,6,5,4,3,2,1,0};
        for(int i=0; i<10 i<10;i++){
            tree.put(a[i],i );
        }
        for(Integer key:tree.keySet()){
            System.out.print(tree.get(key) + " ");
        }
     }
}
输出结果是:

9 8 7 6 5 4 3 2 1 0
可以发现,TreeMap把它保存的记录按照键进行了排序,并且是按升序排序。
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者Leslie Tien和本文原始地址:
https://leslietien.blogspot.com/2018/12/hashmaptreemap.html

No comments:

Post a Comment