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

这篇具有很好参考价值的文章主要介绍了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);
    }
}

运行结果如下:

java linkmap,java,数据结构,开发语言,hash,intellij-idea

 java linkmap,java,数据结构,开发语言,hash,intellij-idea

  从结果上可以很好的看出各个类的所体现的特点。文章来源地址https://www.toymoban.com/news/detail-648998.html

到了这里,关于Java----Hashmap,LinkedMap和TreeMap三者的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

领支付宝红包 赞助服务器费用

相关文章

  • 【java数据结构】HashMap和HashSet

    目录 一.认识哈希表: 1.1什么是哈希表? 1.2哈希表的表示:  1.3常见哈希函数:  二.认识HashMap和HashSet: 2.1关于Map.Entry的说明:, 2.2Map常用方法说明: 2.3HashMap的使用案例: 2.4Set常见方法说明:  2.5HashSet使用案例: 源码: 之前的学习中,如果我们要查找一个元素,肯定是要经

    2024年03月14日
    浏览(84)
  • 【Java 数据结构】HashMap和HashSet

    目录 1、认识 HashMap 和 HashSet 2、哈希表 2.1 什么是哈希表 2.2 哈希冲突 2.2.1 概念 2.2.2 设计合理哈希函数 - 避免冲突 2.2.3 调节负载因子 - 避免冲突 2.2.4 Java中解决哈希冲突 - 开散列/哈希桶 3、HashMap 的部分源码解读 3.1 HashMap 的构造方法 3.2 HashMap 是如何插入元素的? 3.3 哈希表

    2024年02月01日
    浏览(44)
  • Java中JVM、JRE和JDK三者有什么区别和联系?

    任何语言或者软件的运行都需要环境。就像人要生活在空气中,鱼要活在水中,喜阴植物就不能放在阳光下暴晒一样,任何对象个体的存在都离不开其所需要的环境,编程语言亦是一样的。 java 语言的开发运行,也离不开 Java 语言的运行环境 JRE。没有 JRE 的支持,Java 语言便

    2024年02月08日
    浏览(68)
  • 【Java】HashMap、HashTable和ConcurrentHashMap的区别

    HashTable、HashMap和ConcurrentHashMap之间的区别主要体现在线程安全、继承关系与实现接口、对null值的处理、性能以及数据结构等几个方面。以下是对这三者之间区别的详细分析: 项目 HashMap HashTable ConcurrentHashMap null键 允许(仅能有一个) 不允许 允许(仅能有一个) null值 允许

    2024年04月25日
    浏览(57)
  • java八股文面试[数据结构]——HashMap扩容优化

         知识来源: 【2023年面试】HashMap在扩容上做了哪些优化_哔哩哔哩_bilibili  

    2024年02月11日
    浏览(39)
  • java数据结构(哈希表—HashMap)含LeetCode例题讲解

      目录 1、HashMap的基本方法 1.1、基础方法(增删改查) 1.2、其他方法  2、HashMap的相关例题 2.1、题目介绍 2.2、解题 2.2.1、解题思路 2.2.2、解题图解 2.3、解题代码 HashMap 是一个散列表,它存储的内容是键值(key-value)映射。 HashMap 的 key 与 value 类型可以相同也可以不同,根据定

    2024年02月05日
    浏览(52)
  • Map集合体系(HashMap,LinkedHashMap,TreeMap)

    目录 1.Map集合 2.hashMap集合 3.LinkedHashMap集合 4. TreeMap集合 1.Map集合         Map集合是键值对集合         格式:{key1=value1, key2=value2, key3=value3, ...}         Map系列集合的特点都是由键决定的,值只是一个附属品,值不做要求 2.实现类有哪些?,各自有什么特点?  

    2024年02月21日
    浏览(41)
  • JavaSE进阶 | Map集合、HashMap集合、TreeMap集合

    目录 🏀Map集合概述  🥅Map接口常用的方法 🥅哈希表(散列表)数据结构 🥅同时重写HashCode和equals 🥅HashMap和Hashtable的区别 🥅Properties类 🥅TreeSet(TreeMap)集合 🥅自平衡二叉树数据结构 🥅实现比较器接口 🥅集合工具类Collections (1) Map和Collection没有继承关系,是一个平级的

    2023年04月09日
    浏览(44)
  • Java中的TreeMap[78]

    1.基于二叉树的红黑树实现; 2.根据哈希值排序的,想实现自定义类排序需要类实现Comparable比较器接口; 3.存放自定义类需要重写hashCode与equals方法; 4.键如果相同,则会保持键的数据和位置,但修改其值; 本章概述了TreeMap的使用,那么数据结构到这先告一段落了, 1.数组;2.链表;3.二叉树

    2024年02月06日
    浏览(33)
  • 在使用TreeMap时遇到Cannot invoke “java.lang.Integer.intValue()“

    问题代码: 执行代码会抛出 java.lang.NullPointerException: Cannot invoke \\\"java.lang.Integer.intValue()\\\" because the return value of \\\"java.util.TreeMap.floorKey(Object)\\\" is null ,这是因为map.floorKey在无返回值时会返回null,而int无法接null。另外, intValue() 这个是因为,Java发现外面是int接,会自动拆箱将Inte

    2024年02月12日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包