其他数据结构的了解吗?LinkedHashMap、 ConcurrentSkipHashMap
时间: 2023-11-10 09:02:26 浏览: 32
LinkedHashMap是Java集合框架中的一个类,它是HashMap的子类,使用双向链表维护输入顺序或者访问顺序。LinkedHashMap在遍历时可以按照元素的添加顺序或者访问顺序进行遍历,实现了有序性。
ConcurrentSkipHashMap是Java集合框架中的一个类,是ConcurrentHashMap的并发版本。它是一个Map接口的实现,提供了高效并发访问的能力。ConcurrentSkipHashMap中数据结构采用了跳表(SkipList),这个数据结构类似于平衡树,但是时间复杂度更好。
相关问题
linkedhashmap数据结构
LinkedHashMap 是一种基于哈希表的数据结构,它继承自 HashMap 类,并且通过双向链表维护了键值对的顺序。与普通的 HashMap 不同,LinkedHashMap 保持了插入顺序或者访问顺序,这取决于构造函数中传递的参数。它提供了 O(1) 的常量时间复杂度来执行插入、删除和查找操作。
LinkedHashMap 内部使用了哈希表来存储键值对,并且使用双向链表来维护插入顺序或者访问顺序。每个节点包含了键、值以及前驱节点和后继节点的引用。当新的键值对被插入时,它会被添加到链表的末尾。当一个键被访问时,它会被移动到链表的末尾。这种方式保证了迭代顺序与插入顺序或者访问顺序一致。
由于 LinkedHashMap 继承自 HashMap,所以它具有 HashMap 的所有特性,比如高效的查找、删除和插入操作。同时,通过使用双向链表来维护顺序,LinkedHashMap 还可以被用于实现 LRU(Least Recently Used)缓存策略,即删除最近最少使用的元素。
总结一下,LinkedHashMap 是一种基于哈希表和双向链表的数据结构,它提供了按插入顺序或者访问顺序访问键值对的能力,并且具有 HashMap 的高效性能。
LinkedHashMap有序吗?
是的,LinkedHashMap是有序的。它维护了一个双向链表来保证插入顺序或者访问顺序。在插入元素时,LinkedHashMap会将元素插入到链表尾部,同时更新哈希表中的记录;在访问元素时,LinkedHashMap会将元素移动到链表尾部,以保证最近访问的元素在链表尾部,最少访问的元素在链表头部。因此,LinkedHashMap可以用来实现LRU缓存淘汰算法。