18.java 容器都有哪些?
19.Collection 和 Collections 有什么区别?
Collection是一个接口,它是Set、List等容器的父接口;Collections是个一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等等。
20.List、Set、Map 之间的区别是什么?
21.HashMap 和 Hashtable 有什么区别?
(1)HashMap去掉了HashTable的contains方法,但是加上了containsValue() 和containsKey()方法。
(2)HashTable是同步的,而HashMap不是同步的,效率上是比HashTable高
(3)HashMap允许空键值对,HashTable是不允许空键值对的。
22.如何决定使用 HashMap 还是 TreeMap?
因为HashMap的Key值是散列,均匀的,不支持排序。数据结构主要是数组、链表和二黑树。所以HashMap更适合插入、删除和定位元素
TreeMap的key是默认按照升序排序的,所以更适合按照自然顺序或者自定义顺序排序。
23.说一下 HashMap 的实现原理?
详解见上篇文章《手撕HashMap,女朋友再也不用担心我的面试》
24.说一下 HashSet 的实现原理?
HashSet是基于HashMap实现的,HashSet 底层使用HashMap来保存所有元素, 因此HashSet 的实现比较简单,相关HashSet 的操作,基本上都是直接调用底层HashMap的相关方法来完成,HashSet不允许有重复的值,并且元素是无序的。
25.ArrayList 和 LinkedList 的区别是什么?
两者最大的区别是ArrayList 是数组方式存储数据,LinkedList 是双向链表实现存储。ArrayList的特点在于数组元素大小大于实际元素存储的数据以便于增加和插入元素。它允许直接按照序号索引元素,但是插入元素涉及到数组元素移动等内存操作,所以索引数据快而插入数据慢。而LinkedList则相反插入速度较快,索引速度较慢
26.如何实现数组和 List 之间的转换?
List转换为数组:ArrayList的toArray()方法。
数组转List:Arrays的asList方法。
27.ArrayList 和 Vector 的区别是什么?
最大区别在于Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较ArrayList差,因此已经是Java中的遗留容器。
28.Array 和 ArrayList 有何区别?
两者有以下几个区别:
(1)Array可以容纳基本类型和对象,但是ArrayList只能容纳对象。
(2)Array是指定大小,是固定的。但是ArrayList的大小可以动态指定。
(3)Array不能够随意添加和删除其中项,而ArrayList可以在任何位置随意添加和 删除。
29.在 Queue 中 poll()和 remove()有什么区别?
remove() ,如果队列为空的时候,则会抛出空指针异常。而poll()只会返回null
30.哪些集合类是线程安全的?
vector、statck、hashtable、enumeration
31.迭代器 Iterator 是什么?
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
32.Iterator 怎么使用?有什么特点?
Java中的Iterator功能比较简单,并且只能单向移动:(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。(2) 使用next()获得序列中的下一个元素。(3) 使用hasNext()检查序列中是否还有元素。(4) 使用remove()将迭代器新返回的元素删除。Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
33.Iterator 和 ListIterator 有什么区别?
(1)Iterator 可以便利Set和List集合,但是ListIterator只能便利List.
(2) Iterator 只能前向遍历,ListIterator可以向前也可以向后遍历
(3)ListIterator实现了Iterator接口,并且含其它功能,比如:增加元素、替换元素、还有获取前一个还有后一个元素的索引等。
34.怎么确保一个集合不能被修改?
我们可以采用Collections包下的unmodifiableMap方法,通过这个方法返回的map,是不可以修改的。它会报 java.lang.UnsupportedOperationException错
下一期 Java最常见208道面试题_多线程
喜欢的同学可以关注我的微信公众号:Java先生 方便您第一时间阅读
复制代码