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自定义下排序和淘汰逻辑等。