数据结构-map相关

122 阅读1分钟

LinkedHashMap和hashMap和TreeMap的区别

  • LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的。
  • HashMap无序;LinkedHashMap有序,可分为插入顺序和访问顺序两种。如果是访问顺序,那put和get操作已存在的Entry时,都会把Entry移动到双向链表的表尾(其实是先删除再插入)。
  • LinkedHashMap存取数据,还是跟HashMap一样使用的Entry[]的方式,双向链表只是为了保证顺序。
  • LinkedHashMap是线程不安全的。
  • TreeMap中默认的排序为升序,如果要改变其排序可以自己写一个Comparator

扩展: Map + LRU = Linkhashmap + 自己实现数据淘汰 = Android 侧提供现成的类 LruCache(LinkHashmap + 相对固定固定的数据淘汰算法)

自己实现数据淘汰可以使用TreeMap自定义下排序和淘汰逻辑等。