1.HashTable和HashMap的区别:
(1).都实现了Map接口,HashTable是Dictionary的子类,HashMap是AbstractMap的子类;
(2).HashTable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用HashTable了;而对于HashMap,则需要额外的同步机制。
(3).在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,既可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
(4).Map.put()方法会覆盖上一次同键的值。
2. new ArrayList<Group>(1); Constructs a new instance of ArrayList
with the specified initial capacity.
HashMap比较重要的问题是容量、负荷系数和阈值调整。HashMap默认的初始容量是16,负荷系
数是0.75。阈值是为容量乘以负荷系数,无论何时我们尝试添加一个entry,如果map的大小比阀
值大的时候,HashMap会对map的内容进行重新哈希,且使用更大的容量。容量总是2的幂。=即当哈希表中的元素数量超过其容量的75%时,哈希表会自动扩容。扩容通常是按照原来的容量的两倍来进行的。例如创建了一个初始容量为16的HashMap
,当元素数量达到16*0.75=12时,哈希表会自动扩容到32。
3.
java中各种集合的用法和比较
Collection 是对象集合, 有两个子接口 List 和 Set,List 可以通过下标取值,值可以重复,而 Set 只能通过游标来取值,并且值不能重复。
ArrayList , Vector , LinkedList 是 List 的实现类,ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的 。
LinkedList 是线程不安全的,底层是由链表实现的 。
Map 是键值对集合
HashTable 和 HashMap 是 Map 的实现类 。
HashTable 是线程安全的,不能存储 null 值 。
HashMap 不是线程安全的,可以存储 null 值 。
http://blog.youkuaiyun.com/jackie03/article/details/7312481