13.2 具体的集合
集合类型 | 描述 |
ArrayList | 有序,可随机访问,查找快,增删慢 |
LinkedList | 有序,不可随机访问,增删快,查找慢 |
ArrayDeque | 双端队列,有序,不可随机访问,可头尾插入、头尾删除、头尾查看 |
HashSet | 无序哈希集合,不可重复,可检查存在性 |
TreeSet | 有序哈希集合,不可重复,可检查存在性,可排序,可查询大于小于某值的第一个元素,可获取头尾元素 |
EnumSet | 无序保存枚举值集合,快速获得存在性结果(位图的一种,更省空间) |
LinkedHashSet | 插入次序哈希集合,不可重复,可检查存在性,循环时按顺序 |
PriorityQueue | 堆(优先队列),可按顺序排序,插入元素时直接进行排序,插入查找效率都为 O(logn) |
HashMap | 无序键值对,键值不可重复,查找效率O(1),最坏O(logn) |
EnumMap | 枚举剪枝対,键值不可重复,快速获得存在性结果(位图的一种,更省空间) |
LinkedHashMap | 插入次序键值对,键值不可重复,可检查存在性,循环时按顺序 |
WeakHashMap | 弱引用哈希表,可被垃圾回收器回收 |
IdentityHashMap | 哈希强制通过地址判断 |
13.2.1 链表
插入、删除快,查找速度慢的数据结构
现实中使用的情况:栈(配对,比如编译器括号匹配检查)、队列(最常用BFS,有限步数的最优解),跳表(快速在有序集合内查找指定元素)
实际使用情况:算法题+框架级别底层数据结构(白话,初学不太用的上,面试笔试有用,需要学数据结构)
考点补充:List 集合的迭代器 ListIterator 可以查找前一个元素: previous(),也可以添加元素:add(), 普通集合迭代器 Iterator 不可以
❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤
❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤❤🧡💛💚💙💜🤎🖤
运行结果:
🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍
🚗🚓🚕🛺🚙🚌🚐🚎🚑🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍
13.2.2 数组列表
这个一直用,我不知道为什么反而简写了,这个速度更快一些,也更省内存。事实上在实际应用过程,很少直接在数组列表里面添加删除元素的(遇到的大概就是页面上批量选择图片/文件这种会用到批量修改集合元素)。走数据库进行增删操作,然后再取出来新的数据更多一些,几乎没有直接修改数组的情况。
线程安全:Vector
线程不安全:ArrayList
相关内容:选择 《Java核心技术 卷1》查找相关笔记
评论🌹点赞👍收藏✨关注👀,是送给作者最好的礼物,愿我们共同学习,一起进步
公众号 钰娘娘知识汇总