都实现了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把它保存的记录按照键进行了排序,并且是按升序排序。
No comments:
Post a Comment