文档介绍:学习 好资料
: .
Java 集合框架为 Java 编程语言的基础,也是 Java 面试中非常重要的一个知识 点。
这里,我列出了一些关于 Java 集合的重要问题和答案。
1. Java 集合框架是什么?说出一些集合框架的长处?
每种编程语言中都有集合。 最初的 Java 版本号包括几种集合类: Vector 、Stack 、 HashTable 和 Array 。
随着集合的广泛使用。 提出了囊括全部集合接口、实现和算法的集合框 架。
在保证线程安全的情况下使用泛型和并发集合类, Java 已经经历了非常久。它 还包括在 Java 并发包中,堵塞接口以及它们的实现。
集合框架的部分长处例如以下:
(1)使用核心集合类减少开发成本,而非实现我们自己的集合类 (2)随着使用经过严格測试的集合框架类。代码质量会得到提高 ( 3)通过使用 JDK 附带的集合类,能够减少代码维护成本。 (4)复用性和可操作性。
2. 集合框架中的泛型有什么长处?
引入了泛型。全部的集合接口和实现都大量地使用它。泛型同意我们为 集合提供一个能够容纳的对象类型, 因此。假设你加入其他类型的不论什么元素, 它会在编译时报错。这避免了在执行时出现 ClassCastException 。由于你将会 在编译时得到报错信息。
泛型也使得代码整洁,我们不须要使用显式转换和 instanceOf 操作符。
它也给执行时带来长处。由于不会产生类型检查的字节码指令。
3. Java 集合框架的基础接口有哪些? o Collection 为集合层级的根接口。 一个集合代表一组对象。这些对象即为它的元素。 Java 平台不提供这个接口不论什么直接的实现。
o Set 是一个不能包括反复元素的集合。 这个接口对数学集合抽象进行建模。被用来代表集合,就如一副牌。
o List 是一个有序集合。能够包括反复元素。 你能够通过它的索引来訪问不论什么元素。 List 更像长度动态变换的数组。
o Map 是一个将 key 映射到 value 的对象 . 一个 Map 不能包括反复的 key :每一个 key 最多仅仅能映射一个 value 。
一些其他的接口有 Queue 、Dequeue 、SortedSet 、SortedMap 和 ListIterator 。
4. 为何 Collection 不从 Cloneable 和 Serializable 接口继承?
Collection 接口指定一组对象,对象即为它的元素。怎样维护这些元素由
Collection 的详细实现决定。
比如。一些如 List 的 Collection 实现同意反复的元素。 而其他的如 Set 就不同意。 非常多 Collection 实现有一个公有的 clone 方法。
然而。把它放到集合的全部实现中也是没有意义的。这是由于 Collection 是一 个抽象表现。重要的是实现。
当与详细实现打交道的时候, 克隆或序列化的语义和含义才发挥作用。 所以,详 细实现应该决定怎样对它进行克隆或序列化,或它能否够被克隆或序列化。
在全部的实现中授权克隆和序列化,终于导致更少的灵活性和很多其他的限制。 特定的实现应该决定它能否够被克隆和序列化。
5. 为何 Map 接口不继承 Collection 接口?
虽然 Map 接口和它的实现也是集合框架的一部分。 但 Map 不是集合。 集合也不 是 Map 。
因此,Map继承Collection 毫无意义,反之亦然。
假设 Map 继承 Collection 接口,那么元素去哪儿? Map 包括 key-value 对,它 提供抽取 key 或 value 列表集合的方法,可是它不适合 “一组对象 ”规范。
是什么?
Iterator 接口提供遍历不论什么 Collection 的接口。
我们能够从一个 Collection 中使用迭代器方法来获取迭代器实例。迭代器代替 了 Java 集合框架中的 Enumeration 。迭代器同意调用者在迭代过程中移除元素。
7. Enumeration 和 Iterator 接口的差别?
Enumeration 的速度是 Iterator 的两倍,也使用更少的内存。
Enumeration 是非常基础的,也满足了基础的须要。 可是,与 Enumeration 相比, Iterator 更加安全,由于当一个集合正在被遍历的时候。它会阻止其他线程去 改动集合。