HashMap和LinkedHashMap的区别
- LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的。
- HashMap无序;LinkedHashMap有序,可分为插入顺序和访问顺序两种。如果是访问顺序,那put和get操作已存在的Entry时,都会把Entry移动到双向链表的表尾(其实是先删除再插入)。
- LinkedHashMap存取数据,还是跟HashMap一样使用的Entry[]的方式,双向链表只是为了保证顺序。
- LinkedHashMap是线程不安全的。
使用场景
- HashMap:主要是使用无序场景,key和value都可以是null值。
- TreeMap:是有序的,不可使用null作为key值,有序体现在输入后按一定规律排序,默认按key值升序排序。
- LinkedHashMap:是有序的,可以使用null作为key值,有序体现在内部使用双向链表保存输入时候的顺序。