其中map表示的意思为“映射”,HashMap,LinkedMap和TreeMap这三中类都是对Map接口的实现类,在数据插入方面,HashMap是无序插入,LinkedMap是有序插入,而TreeMap会根据键的值进行排序后再进行插入。在运行方面,前两个的运行速度较快,针对Map对象的存储会选择前两者,而后者的运行效率较差。但如果对Map对象有排序需求的话,就会用到TreeMap,该类可以对传入的Map对象进行重构为TreeMap,排序是按照Map对象的键进行排序的。
对于LinkedHashMap与HashMap底层存储结构的区别:
LinkedHashMap
存储结构和HashMap
相同,依然是数组+链表+红黑树
LinkedHashMap
额外持有一个双向链表,维护插入节点的顺序
对于TreeMap:
TreeMap存储K-V键值对,通过红黑树(R-B tree)实现;
TreeMap继承了NavigableMap接口,NavigableMap接口继承了SortedMap接口,可支持一系列的导航定位以及导航操作的方法,当然只是提供了接口,需要TreeMap自己去实现;
TreeMap实现了Cloneable接口,可被克隆,实现了Serializable接口,可序列化;
TreeMap因为是通过红黑树实现,红黑树结构天然支持排序,默认情况下通过Key值的自然顺序进行排序;
以下通过Java代码对这三个类进行基本的演示:
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
public class MapTest {
public static void main(String[] args) {
Map map1 = new HashMap<>();
Map map2 = new LinkedHashMap();
for (int i = 0; i < 10; i++) {
double s = (Math.random()*100);
map1.put(((int)s),"第" + i + "个放入的元素: " + s +"\n");
map2.put(((int)s),"第" + i + "个放入的元素: " + s +"\n");
}
System.out.println("排序前的map");
System.out.println(map1);
System.out.println(map2);
Map soutmap1 = new TreeMap(map1);
Map soutmap2 = new TreeMap(map2);
System.out.println("排序后的map");
System.out.println(soutmap1);
System.out.println(soutmap2);
}
}
运行结果如下:
文章来源:https://www.toymoban.com/news/detail-648998.html
从结果上可以很好的看出各个类的所体现的特点。文章来源地址https://www.toymoban.com/news/detail-648998.html
到了这里,关于Java----Hashmap,LinkedMap和TreeMap三者的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!