在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汇合类面试题,作为一个面试中常常波及的模块,大家在筹备面试前能够重点温习一下。学习完本篇的根本内容后,能够找一些实例代码进行操作和练习。