本文共 1495 字,大约阅读时间需要 4 分钟。
-
- Queue
- 继承Collection接口,Deque、LinkedList、PriorityQueue、BlockingQueue
- 用于缓冲、并发访问等场景
- Set
- 继承Collection接口,HashSet(哈希表)、TreeSet(红黑树)
- 判断重复元素调用hashCode()和equal()方法实现
- List
- ArrayList、LinkedList、Vector、Stack
- Map
- HashMap、ConcurrentHashMap
- Tree
- 红黑树
- 根是黑色的
- 叶子节点是黑色的空节点
- 红色节点子节点是黑色的
- 包含相同数目的黑色节点
- TreeMap、TreeSet、HashMap
- 解决二叉查找树会退化成线性结构的缺点
- B树、B+树、B*树
- B+树不维护关键字具体信息,不考虑Value的存储,所有需要信息在叶子节点
- B*树在非叶子节点兄弟之间增加指针,关键字个数至少为(2/3)* M
- LSM树
- HashMap HashTable区别
- HashTable方法同步,方法用synchronized修饰,多线程场合
- HashTable不允许null值
- 遍历方式,HashTable使用Enumeration遍历,HashMap使用Iterator遍历
- 哈希值使用不同,HashTable直接使用hashCode
- hash数组大小默认11,HshTable增加为old*2 + 1,HashMap默认16,增加为2的指数倍
- HashTable线程安全,但是需要获得对象锁,一般使用CurrentHashMap
- HashTable竞争同一把锁,ConcurrentHashMap分段加锁
- HashMap Concurrent HashMap区别
- 非线程安全&线程安全
- 1.7ConcurrentHashMap对Hash桶分段segment(锁),1.8Node数组+链表+红黑树,并发控制使用Synchronized和CAS来操作
- HashTable使用Synchronized保证线程安全,效率低
- ConcurrentHashMap锁粒度更精细,并发性能好
- LinkedList ArrayList区别
- 双向链表&Object数组
- 插入删除&随机查找
- 都是不同步的,不保证线程安全
- 内存空间占用,ArrayList在结尾预留容量空间,LinkedList每一个元素消耗更多的空间
- ArrayList Vector区别
- Vector类所有方法同步,ArrayList不是同步的
- HashMap实现
- comparable和comparator区别
- comparable有一个compareTo(Object obj)方法用来排序
- comparator接口有一个compare(Object obj1,Object obj2)方法用来排序
- 数组排序用Arrays.sort(),集合排序用Collections.sort()
-
- 排序
- 搜索
- 广度优先
- 深度优先
- 回溯法(Backtracking)
- 求解排列组合问题
- 进入递归时标记为已访问,递归返回时标记为未访问
- 动态规划
转载于:https://www.cnblogs.com/lhspeppa/p/10461316.html