数组
- 直接下标数组 如JAVA中的ArrayList
- Hash值Mod为下标 如JAVA中的HashMap
链表
- 单项链表
- 双向链表 如JAVA中LinkedList
- Skip List 跳跃表,可快速查找词语,在lucene、redis、Hbase等均有实现。相对于TreeMap等结构,特别适合高并发场景(Skip List介绍)
栈
队列
树
- Ternary Search Tree 三叉树,每一个node有3个节点,兼具省空间和查询快的优点(Ternary Search Tree)
- Trie 适合英文词典,如果系统中存在大量字符串且这些字符串基本没有公共前缀,则相应的trie树将非常消耗内存(数据结构之trie树)
- Finite State Transducers (FST) 一种有限状态转移机,Lucene 4有开源实现,并大量使用
- Double Array Trie 适合做中文词典,内存占用小,很多分词工具均采用此种算法
图
通过邻接矩阵/邻接表/逆邻接表/十字链表表示。可以通过深度优先或者广度优先进行遍历。