ArrayList和Vector的区别
1、Vector是线程安全的,方法使用synchronized关键字修饰。ArrayList不是。
2、当需要扩容时,ArrayList扩容原来的0.5倍,Vector扩容原来的1倍。
Array和ArrayList的区别
1、Array可以存储对象或者基本数据类型,但是ArrayList只能存储对象。
2、Array是固定大小的,ArrayList是可以自动扩展的。
3、Array的内置方法没有ArrayList多。
Queue中的 poll 和 remove 的异同
相同点:
都返回队列的第一个元素,并从队列中删除这个元素。
不同点:
如果Queue为空,poll返回null。remove 抛出NoSuchElementException异常。
集合类实现原理
LinkedList:双向链表
HashMap:数组+单向链表+红黑树
HashSet:HashMap
LinkedHashMap:使用HashMap存储数据,使用LinkedList存储顺序。
HashMap 和HashTable 区别
HashMap 允许 key 和 value 为 null,Hashtable 不允许。
HashMap 的默认初始容量为 16,Hashtable 为 11。
HashMap 的扩容为原来的 2 倍,Hashtable 的扩容为原来的 2 倍加 1。
HashMap 是非线程安全的,Hashtable是线程安全的。
HashMap 的 hash 值重新计算过,Hashtable 直接使用 hashCode。
HashMap 去掉了 Hashtable 中的 contains 方法。
HashMap 继承自 AbstractMap 类,Hashtable 继承自 Dictionary 类。
JDK 1.7 和 1.8 HashMap 链表插入的区别
1.7 插入到头部
1.8 插入到尾部
网友评论