Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
月凉、
JavaGuide
提交
23efacc2
J
JavaGuide
项目概览
月凉、
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
23efacc2
编写于
11月 07, 2021
作者:
G
guide
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update java集合框架基础知识&面试题总结.md
上级
a26ff09c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
3 addition
and
56 deletion
+3
-56
docs/java/collection/java集合框架基础知识&面试题总结.md
docs/java/collection/java集合框架基础知识&面试题总结.md
+3
-56
未找到文件。
docs/java/collection/java集合框架基础知识&面试题总结.md
浏览文件 @
23efacc2
<!-- TOC -->
-
[
1. 剖析面试最常见问题之 Java 集合框架
](
#1-剖析面试最常见问题之-java-集合框架
)
-
[
1.1. 集合概述
](
#11-集合概述
)
-
[
1.1.1. Java 集合概览
](
#111-java-集合概览
)
-
[
1.1.2. 说说 List, Set, Queue, Map 四者的区别?
](
#112-说说-list-set-queue-map-四者的区别
)
-
[
1.1.3. 集合框架底层数据结构总结
](
#113-集合框架底层数据结构总结
)
-
[
1.1.3.1. List
](
#1131-list
)
-
[
1.1.3.2. Set
](
#1132-set
)
-
[
1.1.3.3 Queue
](
#1133-queue
)
-
[
1.1.3.4. Map
](
#1134-map
)
-
[
1.1.4. 如何选用集合?
](
#114-如何选用集合
)
-
[
1.1.5. 为什么要使用集合?
](
#115-为什么要使用集合
)
-
[
1.2. Collection 子接口之 List
](
#12-collection-子接口之-list
)
-
[
1.2.1. Arraylist 和 Vector 的区别?
](
#121-arraylist-和-vector-的区别
)
-
[
1.2.2. Arraylist 与 LinkedList 区别?
](
#122-arraylist-与-linkedlist-区别
)
-
[
1.2.2.1. 补充内容:双向链表和双向循环链表
](
#1221-补充内容双向链表和双向循环链表
)
-
[
1.2.2.2. 补充内容:RandomAccess 接口
](
#1222-补充内容randomaccess-接口
)
-
[
1.2.3. 说一说 ArrayList 的扩容机制吧
](
#123-说一说-arraylist-的扩容机制吧
)
-
[
1.3. Collection 子接口之 Set
](
#13-collection-子接口之-set
)
-
[
1.3.1. comparable 和 Comparator 的区别
](
#131-comparable-和-comparator-的区别
)
-
[
1.3.1.1. Comparator 定制排序
](
#1311-comparator-定制排序
)
-
[
1.3.1.2. 重写 compareTo 方法实现按年龄来排序
](
#1312-重写-compareto-方法实现按年龄来排序
)
-
[
1.3.2. 无序性和不可重复性的含义是什么
](
#132-无序性和不可重复性的含义是什么
)
-
[
1.3.3. 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
](
#133-比较-hashsetlinkedhashset-和-treeset-三者的异同
)
-
[
1.4 Collection 子接口之 Queue
](
#14-collection-子接口之-queue
)
-
[
1.4.1 Queue 与 Deque 的区别
](
#141-queue-与-deque-的区别
)
-
[
1.4.2 ArrayDeque 与 LinkedList 的区别
](
#142-arraydeque-与-linkedlist-的区别
)
-
[
1.4.3 说一说 PriorityQueue
](
#143-说一说-priorityqueue
)
-
[
1.5. Map 接口
](
#15-map-接口
)
-
[
1.5.1. HashMap 和 Hashtable 的区别
](
#151-hashmap-和-hashtable-的区别
)
-
[
1.5.2. HashMap 和 HashSet 区别
](
#152-hashmap-和-hashset-区别
)
-
[
1.5.3. HashMap 和 TreeMap 区别
](
#153-hashmap-和-treemap-区别
)
-
[
1.5.4. HashSet 如何检查重复
](
#154-hashset-如何检查重复
)
-
[
1.5.5. HashMap 的底层实现
](
#155-hashmap-的底层实现
)
-
[
1.5.5.1. JDK1.8 之前
](
#1551-jdk18-之前
)
-
[
1.5.5.2. JDK1.8 之后
](
#1552-jdk18-之后
)
-
[
1.5.6. HashMap 的长度为什么是 2 的幂次方
](
#156-hashmap-的长度为什么是-2-的幂次方
)
-
[
1.5.7. HashMap 多线程操作导致死循环问题
](
#157-hashmap-多线程操作导致死循环问题
)
-
[
1.5.8. HashMap 有哪几种常见的遍历方式?
](
#158-hashmap-有哪几种常见的遍历方式
)
-
[
1.5.9. ConcurrentHashMap 和 Hashtable 的区别
](
#159-concurrenthashmap-和-hashtable-的区别
)
-
[
1.5.10. ConcurrentHashMap 线程安全的具体实现方式/底层具体实现
](
#1510-concurrenthashmap-线程安全的具体实现方式底层具体实现
)
-
[
1.5.10.1. JDK1.7(上面有示意图)
](
#15101-jdk17上面有示意图
)
-
[
1.5.10.2. JDK1.8 (上面有示意图)
](
#15102-jdk18-上面有示意图
)
-
[
1.6. Collections 工具类
](
#16-collections-工具类
)
-
[
1.6.1. 排序操作
](
#161-排序操作
)
-
[
1.6.2. 查找,替换操作
](
#162-查找替换操作
)
-
[
1.6.3. 同步控制
](
#163-同步控制
)
<!-- /TOC -->
# 1. 剖析面试最常见问题之 Java 集合框架
## 1.1. 集合概述
...
...
@@ -309,11 +258,9 @@ Output:
### 1.3.3. 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
`HashSet`
是
`Set`
接口的主要实现类 ,
`HashSet`
的底层是
`HashMap`
,线程不安全的,可以存储 null 值;
`LinkedHashSet`
是
`HashSet`
的子类,能够按照添加的顺序遍历;
`TreeSet`
底层使用红黑树,元素是有序的,排序的方式有自然排序和定制排序。
-
`HashSet`
、
`LinkedHashSet`
和
`TreeSet`
都是
`Set`
接口的实现类,都能保证元素唯一,并且都不是线程安全的。
-
`HashSet`
、
`LinkedHashSet`
和
`TreeSet`
的主要区别在于底层数据结构不同。
`HashSet`
的底层数据结构是哈希表(基于
`HashMap`
实现)。
`LinkedHashSet`
的底层数据结构是链表和哈希表,元素的插入和取出顺序满足 FIFO。
`TreeSet`
底层数据结构是红黑树,元素是有序的,排序的方式有自然排序和定制排序。
-
底层数据结构不同又导致这三者的应用场景不同。
`HashSet`
用于不需要保证元素插入和取出顺序的场景,
`LinkHashSet`
用于保证元素的插入和取出顺序满足 FIFO 的场景,
`TreeSet`
用于支持对元素自定义排序规则的场景。
## 1.4 Collection 子接口之 Queue
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录