Java----Hashmap,LinkedMap和TreeMap三者的区别

        其中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://uudwc.com/A/jV1ez

原文地址:https://blog.csdn.net/weixin_65237252/article/details/128986118

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年08月12日 20:31
下一篇 2023年08月12日 20:35