目录
一、ArrayList 和 Vector 的区别
二、说说 ArrayList,Vector, LinkedList 的存储性能和特性
三、快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么?
四、hashmap 的数据结构
五、HashMap 的工作原理是什么?
六、Hashmap 什么时候进行扩容呢?
七、List、Map、Set 三个接口,存取元素时,各有什么特点?
八、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用 == 还是 equals()? 它们有何区别?
九、两个对象值相同 (x.equals(y) == true),但却可有不同的 hash code,这句话对不对?
十、heap 和 stack 有什么区别
十一、Java 集合类框架的基本接口有哪些?
十二、HashSet 和 TreeSet 有什么区别?
十三、HashSet 的底层实现是什么?
十四、LinkedHashMap 的实现原理?
十五、为什么集合类没有实现 Cloneable 和 Serializable 接口?
十六、什么是迭代器 (Iterator)?
十七、Iterator 和 ListIterator 的区别是什么?
十八、数组 (Array) 和列表 (ArrayList) 有什么区别?什么时候应该使用 Array 而不是 ArrayList?
十九、Java 集合类框架的最佳实践有哪些?
二十、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是 equals()?它们有何区别?
二十一、Comparable 和 Comparator 接口是干什么的?列出它们的区别
二十二、Collection 和 Collections 的区别
二十三、Java中的Collection框架
1. 常见的数据结构
2. 算法考点
3. Java集合框架示意图
4. 集合框架体系如图所示
5. Set和List的区别
6. Java中的数组
7. Java集合List和Set分析
二十四、ArrayList分析
1. 数组的类型是什么?
2. ArrayList的数组的最大极限是多少?
3. ArrayList无参构造函数
它什么时候初始化呢?
如何进行动态扩容的呢?扩容时机是什么?
4. 关于数组的最大容量问题
5. 关于删除元素
二十五、LinkedeList和ArrayList的区别
二十六、HashSet源码分析
二十七、Map的整体结构
二十八、HashMap
1. HashMap(jdk1.8前):数组 (查询快)+ 链表(添加删除快)
2. HashMap:JDK1.8以后:数组+链表+红黑树
3. JDK1.8-HashMap源码分析
4. JDK1.8-HashMap构造器
5. JDK1.8-HashMap的put操作
每个put操作都有可能会触发哈希表扩容
二十九、HashMap如何减少有效碰撞
三十、深入理解JDK1.8中HashMap哈希冲突解决方案
为什么采用hashcode的高16位和低16位异或能降低hash碰撞?hash函数能不能直接用key的hashcode?
三十一、HashMap其他面试题
1. HashMap为什么使用数组?
2. hash碰撞(冲突),如何解决?
3. JDK1.8-之后长度超过8转变为红黑树,长度8的由来?
4. 为什么HashMap允许的最大容量为2的30次方?
5. HashMap扩容机制-为什么负载因子默认为0.75f?
6. 为什么Hashmap长度保证2的n次幂
三十二、HashMap使用场景有那些?
1. HashMap
2. 框架用途
3. 为什么要使用Map数据结构呢
4. 开发中场景有那些?
三十三、Java集合中removeIf使用
一、ArrayList 和 Vector 的区别
这两个类都实现了 List 接口(List 接口继承了 Collection 接口),他们都是有序集 合,
即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我 们以后可以按位置索引号取出某
个元素,并且其中的数据是允许重复的,这是 HashSet 之类的集合的最大不同处,HashSet 之类的集合不可以
按索引号去检索其 中的元素,也不允许有重复的元素。
同步性:
Vector 是线程安全的,也就是说是它的方法之间是线程同步的,而 ArrayList 是线程不安全的,它的方法之间是
线程不同步的。
如果只有一个线程会访问到集合,那 最好是使用 ArrayLi