这里写自定义目录标题

欢迎使用Markdown编辑器

leveldb的核心结构是MemTable,MemTable中存储的key是有序的
【leveldb源码】核心结构之memtable
为了解决key有序的问题,我们需要解决摸底一遍java的有序集合,在此之前,我们首先需要摸底一遍java的集合。
这里为了不用画图,引用本篇博客中的图图,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口。Collection接口是集合类的跟接口,set和list继承了Collection接口,map和Collection接口没有关系,但是都属于集合类的一部分。其中主要的实现类有:

  • map
    • HashMap
    • Hashtable
    • ConcurrentHashMap
    • LinkedHashMap
    • TreeMap
  • set
    • TreeSet
    • HashSet
    • LinkedHashSet
  • list
    • Vector
    • Stack
    • ArrayList
    • LinkedList
      其中,有序的集合有:TreeMap、TreeSet、Vector、Stack、ArrayList、LinkedList,此外在学习redis的时候,我们还知道一个查询和写入删除很快的数据结构叫跳表,这里我们根据查询、写入、删除的效率,选择跳表作为我们的解决key有序问题的方案,因为TreeMap在删除和新增节点时,涉及到红黑树的左旋、右旋、变色的问题,在多线程环境下,效率很低,因为在非多线程的情况下,应当尽量使用TreeMap。此外对于并发性相对较低的并行程序可以使用Collections.synchronizedSortedMap将TreeMap进行包装,也可以提供较好的效率。对于高并发程序,应当使用ConcurrentSkipListMap,能够提供更高的并发度。这篇文章如是说,但是作为学习,我们还是应该学习下LinkedHashMapSkipListTreeMap的原理。
      【leveldb源码】核心结构之memtable

java中的有序集合列表有、【leveldb源码】核心结构之memtable
【leveldb源码】核心结构之memtable
【leveldb源码】核心结构之memtable

相关文章: