关于java:java集合类面试题

6次阅读

共计 2050 个字符,预计需要花费 6 分钟才能阅读完成。

在 java 面试题的考查中,汇合类是必不可缺少的考点。在学习时,其中的几个常见汇合类和接口问题都是重点,在面试时也会作为高频题目而呈现。本篇为大家带来一些汇合类的根底知识点题目,便于大家在温习时进行概念的了解和重点的突出,上面一起来看看都有哪些题目吧。

1.Java 汇合框架是什么

每种编程语言中都有汇合,最后的 Java 版本蕴含几种汇合类:Vector、Stack、HashTable 和 Array。随着汇合的宽泛应用,Java1.2 提出了囊括所有汇合接口、实现和算法的汇合框架。在保障线程平安的状况下应用泛型和并发汇合类,Java 曾经经验了很久。它还包含在 Java 并发包中,阻塞接口以及它们的实现。

2. 汇合框架的长处

(1)应用外围汇合类升高开发成本,而非实现咱们本人的汇合类。

(2)随着应用通过严格测试的汇合框架类,代码品质会失去进步。

(3)通过应用 JDK 附带的汇合类,能够升高代码保护老本。

(4)复用性和可操作性。

3.Java 汇合框架的根底接口有哪些

Collection 为汇合层级的根接口。一个汇合代表一组对象,这些对象即为它的元素。Java 平台不提供这个接口任何间接的实现。Set 是一个不能蕴含反复元素的汇合。这个接口对数学汇合形象进行建模,被用来代表汇合,就如一副牌。List 是一个有序汇合,能够蕴含反复元素。你能够通过它的索引来拜访任何元素。List 更像长度动静变换的数组。Map 是一个将 key 映射到 value 的对象. 一个 Map 不能蕴含反复的 key:每个 key 最多只能映射一个 value。一些其它的接口有 Queue、Dequeue、SortedSet、SortedMap 和 ListIterator。

4.ArrayList 和 LinkedList 的区别

(1)是否保障线程平安:ArrayList 和 LinkedList 都是不同步的,也就是不保障线程平安;

(2)底层数据结构:Arraylist 底层应用的是 Object 数组;LinkedList 底层应用的是 双向链表 数据结构(JDK1.6 之前为循环链表,JDK1.7 勾销了循环。留神双向链表和双向循环链表的区别,上面有介绍到!)

(3)插入和删除是否受元素地位的影响:① ArrayList 采纳数组存储,所以插入和删除元素的工夫复杂度受元素地位的影响。比方:执行 add(E e)办法的时候,ArrayList 会默认在将指定的元素追加到此列表的开端,这种状况工夫复杂度就是 O(1)。然而如果要在指定地位 i 插入和删除元素的话(add(int index, E element))工夫复杂度就为 O(n-i)。因为在进行上述操作的时候汇合中第 i 和第 i 个元素之后的 (n-i) 个元素都要执行向后位 / 向前移一位的操作。② LinkedList 采纳链表存储,所以插入,删除元素工夫复杂度不受元素地位的影响,都是近似 O(1)而数组为近似 O(n)。

(4)是否反对疾速随机拜访:LinkedList 不反对高效的随机元素拜访,而 ArrayList 反对。疾速随机拜访就是通过元素的序号疾速获取元素对象 (对应于 get(int index) 办法)。

(5)内存空间占用:ArrayList 的空 间节约次要体现在在 list 列表的结尾会预留肯定的容量空间,而 LinkedList 的空间破费则体现在它的每一个元素都须要耗费比 ArrayList 更多的空间(因为要寄存间接后继和间接前驱以及数据)。

5.HashMap 与 HashTable 的区别

HashMap 没有思考同步,是线程不平安的;Hashtable 应用了 synchronized 关键字,是线程平安的;

HashMap 容许 K / V 都为 null;后者 K / V 都不容许为 null;

HashMap 继承自 AbstractMap 类;而 Hashtable 继承自 Dictionary 类;

6.Iterator 是什么

Iterator 接口提供遍历任何 Collection 的接口。咱们能够从一个 Collection 中应用迭代器办法来获取迭代器实例。迭代器取代了 Java 汇合框架中的 Enumeration。迭代器容许调用者在迭代过程中移除元素。

7. 什么是哈希抵触

当两个不同的输出值,依据同一散列函数计算出雷同的散列值的景象,咱们就把它叫做碰撞(哈希碰撞)。

8.fail-fast 与 fail-safe 有什么区别

Iterator 的 fail-fast 属性与以后的汇合独特起作用,因而它不会受到汇合中任何改变的影响。Java.util 包中的所有汇合类都被设计为 fail-fast 的,而 java.util.concurrent 中的汇合类都为 fail-safe 的。Fail-fast 迭代器抛出 ConcurrentModificationException,而 fail-safe 迭代器从不抛出 ConcurrentModificationException。

以上就是 java 汇合类面试题,作为一个面试中常常波及的模块,大家在筹备面试前能够重点温习一下。学习完本篇的根本内容后,能够找一些实例代码进行操作和练习。

正文完
 0