面试题-集合
1:Collection 集合框架2:并发集合框架List,Set,Queue。
3:HashMap3-1:HashMap 的数据结构数组+链表,链表容量为 9 时转化为红黑树,扩容时小于等于 6 退化为链表。
3-2:链表插入法3-2-1:头插法12node.next = head;head = node;
2-2-2:尾插法12tail.next = node;tail = node;
3-2-3:扩容死循环问题jdk1.8 以前链表扩容是加入到链表首,而 1.8 是加入到链表尾,已经不会出现这个问题。
3-3:红黑树的引入3-3-1:HashMap 为什么要树化?在最坏的情况下,查询效率从 O(1)变为线性的 O(n),而红黑树就是为了解决这个问题。红黑树能保证最坏情况也有 O(logn)的时间复杂度。
3-3-2:HashMap 树化门槛及作用链表长度大于 8 就会进行树化,是为了保证最坏情况的时间复杂度。
3-3-3:为什么不把链表全部换为红黑树只有数据很多的情况下才需要红黑树,因为红黑树所消耗的资源和链表更大,而时间消耗也不会差太多。
3-3-4:为什么是使用红黑树而不 ...
HashMap和Hashtable的区别
转自:HashMap 与 HashTable 的区别并加以修改
作者Hashtable:HashMap:
HashMap 比 Hashtable 多了一个并发大神:Doug Lea。
产生时间Hashtable 是 java 一开始发布时就提供的键值映射的数据结构,而 HashMap 产生于 JDK1.2。虽然 Hashtable 比 HashMap 出现的早一些,但是现在 Hashtable 基本上已经被弃用了。而 HashMap 已经成为应用最为广泛的一种数据类型了。
继承父类HashMap 是继承自AbstractMap类,而 Hashtable 是继承自Dictionary类。不过它们都实现了同时实现了map、Cloneable(可复制)、Serializable(可序列化)这三个接口
123456789public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable{ ...
Java集合
概念Java 是面向对象的语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们必须把多个对象进行存储。已有的容器类型有:数组和 StringBuffer。但是,StringBuffer 的结果是一个字符串,不一定满足我们的要求,所以我们只能选择数组,这就是对象数组。而对象数组又不能适应变化的需求,因为数组的长度是固定的,此时,为了适应变化的需求,Java 就提供了集合类。
来自百度百科:集合框架(Java Collections Framework,JCF)是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。合理地利用 Java 集合框架不但可以提高程序的运行速度和质量,而且还可以减少设计新的 API(Application Programming Interface,应用程序接口),设计者和实现者不需要在每次创建一种依赖于集合内容的 API 时重新设计,只需使用标准集合框架的接口即可。
与现代数据结构常见的类库一样,Java 集合类库将接口(interface)与实现(imple ...