java的Map
HashMap HashMap和Hashtable区别 Hashtable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap,这如同Vector和ArrayList一样。 Hashtable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。 两者的遍历方式大同小异,Hashtable仅仅比HashMap多一个elements方法,两者都能通过values()方法返回一个Collection,然后进行遍历,两者也可以通过entrySet()返回一个Set,然后进行遍历处理。 Hashtable使用Enumeration, HashMap使用Iterator。 哈希值的使用不同,Hashtable直接使用对象的hashCode,而HashMap重新计算hash值,而且用于代替求模。 Hashtable的hash数组默认大小是11,增加的方式是old * 2 + 1;HashMap的hash数组默认大小是16,而且一定是2的指数。 Hashtable基于Dictionary类,而HashMap基于AbstractMap类。 HashMap中的key可以是任何对象或数据类型吗 可以为null,但不能是可变对象,如果是可变对象的话,对象中的属性改变时,则相应的对象hashCode也进行相应改变