没有合适的资源?快使用搜索试试~ 我知道了~
Java集合面试题.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 124 浏览量
2023-08-09
10:19:20
上传
评论
收藏 32KB DOCX 举报
温馨提示
试读
16页
1. Java 集合框架是什么?说出一些集合框架的优点? 2. 集合框架中的泛型有什么优点? 3. Java 集合框架的基础接口有哪些? 4. 为何 Collection 不从 Cloneable 和 Serializable 接口继承? 5. 为何 Map 接口不继承 Collection 接口? 6. Iterator 是什么? 7. Enumeration 和 Iterator 接口的区别? 8. 为何没有像 Iterator.add()这样的方法,向集合中添加元素? 9. 为何迭代器没有一个方法可以直接获取下一个元素,而不需要 移动游标? 10. Iterater 和 ListIterator 之间有什么区别? .... ... ...
资源推荐
资源详情
资源评论
集合面试题
Java 集合框架为 Java 编程语言的基础,也是 Java 面试中很重要的一个知识点。这里,
我
列出了一些关于 Java 集合的重要问题和答案。
另外,码农网之前也整理过一篇关于 Java 集合面试题的文章:大公司最喜欢问的 Java
集
合类面试题
1.
Java 集合框架是什么?说出一些集合框架的优点?
每种编程语言中都有集合,最初的 Java 版本包含几种集合类:Vector、Stack、HashTable
和 Array。随着集合的广泛使用,Java1.2 提出了囊括所有集合接口、实现和算法的集合框
架。在保证线程安全的情况下使用泛型和并发集合类,Java 已经经历了很久。它还包括在
Java 并发包中,阻塞接口以及它们的实现。集合框架的部分优点如下:
(1)使用核心集合类降低开发成本,而非实现我们自己的集合类。
(2)随着使用经过严格测试的集合框架类,代码质量会得到提高。
(3)通过使用 JDK 附带的集合类,可以降低代码维护成本。
(4)复用性和可操作性。
2.
集合框架中的泛型有什么优点?
Java1.5 引入了泛型,所有的集合接口和实现都大量地使用它。泛型允许我们为集合提供
一个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错。
这避免了在运行时出现 ClassCastException,因为你将会在编译时得到报错信息。泛型也
使得代码整洁,我们不需要使用显式转换和 instanceOf 操作符。它也给运行时带来好处,
因为不会产生类型检查的字节码指令。
3.
Java 集合框架的基础接口有哪些?
Collection 为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java
平台不提供这个接口任何直接的实现。
Set 是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集
合,就如一副牌。
List 是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List 更像
长度动态变换的数组。
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 列表集合的方法,但是它不适合“一组对象”规范。
6.
Iterator 是什么?
Iterator 接口提供遍历任何 Collection 的接口。我们可以从一个 Collection 中使用迭代器
方
法来获取迭代器实例。迭代器取代了 Java 集合框架中的 Enumeration。迭代器允许调用
者
在迭代过程中移除元素。
7.
Enumeration 和 Iterator 接口的区别?
Enumeration 的速度是 Iterator 的两倍,也使用更少的内存。Enumeration 是非常基础的,
也满足了基础的需要。但是,与 Enumeration 相比,Iterator 更加安全,因为当一个集合
正在被遍历的时候,它会阻止其它线程去修改集合。
迭代器取代了 Java 集合框架中的 Enumeration。迭代器允许调用者从集合中移除元素,
而
Enumeration 不能做到。为了使它的功能更加清晰,迭代器方法名已经经过改善。
8.
为何没有像 Iterator.add()这样的方法,向集合中添加元素?
语义不明,已知的是,Iterator 的协议不能确保迭代的次序。然而要注意,ListIterator 没
有提供一个 add 操作,它要确保迭代的顺序。
9.
为何迭代器没有一个方法可以直接获取下一个元素,而不需要
移动游标?
它可以在当前 Iterator 的顶层实现,但是它用得很少,如果将它加到接口中,每个继承都
要去实现它,这没有意义。
10. Iterater 和 ListIterator 之间有什么区别?
(1)我们可以使用 Iterator 来遍历 Set 和 List 集合,而 ListIterator 只能遍历 List。
(2)Iterator 只可以向前遍历,而 LIstIterator 可以双向遍历。
(3)ListIterator 从 Iterator 接口继承,然后添加了一些额外的功能,比如添加一个元素、
替换一个元素、获取前面或后面元素的索引位置。
11. 遍历一个 List 有哪些不同的方式?
List<String> strList = new ArrayList<>();
//使用 for-each 循环
for(String obj : strList){
System.out.println(obj);
}
//using iterator
Iterator<String> it = strList.iterator();
剩余15页未读,继续阅读
资源评论
Java毕设王
- 粉丝: 6281
- 资源: 1074
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功