Map系列

共有 12 个主题
## Map是一种(key/value)的映射结构,其它语言里可能称作字典(Dictionry,包括java早期也是叫做字典) #### Map中的元素是一个key只能对应一个value不能存在重复的key. java中提供的Map的实现主要有HashMap、LinkedHashMap、WeakHashMap、TreeMap、ConcurrentHashMap、ConcurrentSkipListMap,另外还有两个比较古老的Map实现HashTable和Properties。 关于Map的问题主要有: 1. 什么是散列表? 2. 怎么实现一个散列表? 3. java中HashMap实现方式的演进? 4. HashMap的容量有什么特点? 5. HashMap是怎么进行扩容的? 6. HashMap中的元素是否是有序的? 7. HashMap何时进行树化?何时进行反树化? 8. HashMap是怎么进行缩容的? 9. HashMap插入、删除、查询元素的时间复杂度各是多少? 10. HashMap中的红黑树实现部分可以用其它数据结构代替吗? 11. LinkedHashMap是怎么实现的? 12. LinkedHashMap是有序的吗?怎么个有序法? 13. LinkedHashMap如何实现LRU缓存淘汰策略? 14. WeakHashMap使用的数据结构? 15. WeakHashMap具有什么特性? 16. WeakHashMap通常用来做什么? 17. WeakHashMap使用String作为key是需要注意些什么?为什么? 18. 什么是弱引用? 19. 红黑树具有哪些特性? 20. TreeMap就有序的吗?怎么个有序法? 21. TreeMap是否需要扩容? 22. 什么是左旋?什么是右旋? 23. 红黑树怎么插入元素? 24. 红黑树怎么删除元素? 25. 为什么要进行平衡? 26. 如何实现红黑树的遍历? 27. TreeMap中是怎么遍历的? 28. TreeMap插入、删除、查询元素的时间复杂度各是多少? 29. HashMap在多线程环境中什么时候会出现问题? 30. ConcurrentHashMap的存储结构? 31. ConcurrentHashMap是怎么保证并发安全的? 32. ConcurrentHashMap是怎么扩容的? 33. ConcurrentHashMap的size()方法的实现知多少? 34. ConcurrentHashMap是强一致性的吗? 35. ConcurrentHashMap不能解决什么问题? 36. ConcurrentHashMap中哪些地方运用到分段锁的思想? 37. 什么是伪共享?怎么避免伪共享? 38. 什么是跳表? 40. ConcurrentSkipList是有序的吗? 41. ConcurrentSkipList是如何保证线程安全的? 42. ConcurrentSkipList插入、删除、查询元素的时间复杂度各是多少? 43. ConcurrentSkipList的索引具有什么特性? 44. 为什么Redis选择使用跳表而不是红黑树来实现有序集合? > 关于Map的问题大概就这么多,你都能回答上来吗?