HashMap,LinkedHashMap和TreeMap之间的区别

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

本文翻译自:Difference between HashMap, LinkedHashMap and TreeMap

What is the difference between HashMap , LinkedHashMap and TreeMap in Java? Java中的HashMapLinkedHashMapTreeMap什么区别? I don't see any difference in the output as all the three has keySet and values . 我没有看到输出有任何差异,因为所有三个都有keySetvalues What are Hashtable s? 什么是Hashtable

Map m1 = new HashMap();
m1.put("map", "HashMap");
m1.put("schildt", "java2");
m1.put("mathew", "Hyden");
m1.put("schildt", "java2s");
print(m1.keySet()); 
print(m1.values()); 

SortedMap sm = new TreeMap();
sm.put("map", "TreeMap");
sm.put("schildt", "java2");
sm.put("mathew", "Hyden");
sm.put("schildt", "java2s");
print(sm.keySet()); 
print(sm.values());

LinkedHashMap lm = new LinkedHashMap();
lm.put("map", "LinkedHashMap");
lm.put("schildt", "java2");
lm.put("mathew", "Hyden");
lm.put("schildt", "java2s");
print(lm.keySet()); 
print(lm.values());

#1楼

参考:https://stackoom.com/question/C7lJ/HashMap-LinkedHashMap和TreeMap之间的区别


#2楼

Just some more input from my own experience with maps, on when I would use each one: 从我自己的地图经验中获得更多的输入,当我使用每个地图时:

  • HashMap - Most useful when looking for a best-performance (fast) implementation. HashMap - 在寻找最佳性能(快速)实现时最有用。
  • TreeMap (SortedMap interface) - Most useful when I'm concerned with being able to sort or iterate over the keys in a particular order that I define. TreeMap(SortedMap接口) - 当我关心能够按照我定义的特定顺序对键进行排序或迭代时,最有用。
  • LinkedHashMap - Combines advantages of guaranteed ordering from TreeMap without the increased cost of maintaining the TreeMap. LinkedHashMap - 结合TreeMap保证排序的优点,而不会增加维护TreeMap的成本。 (It is almost as fast as the HashMap). (它几乎与HashMap一样快)。 In particular, the LinkedHashMap also provides a great starting point for creating a Cache object by overriding the removeEldestEntry() method. 特别是,LinkedHashMap还为通过覆盖removeEldestEntry()方法创建Cache对象提供了一个很好的起点。 This lets you create a Cache object that can expire data using some criteria that you define. 这使您可以使用您定义的某些条件创建可以使数据到期的Cache对象。

#3楼

HashMap makes absolutely not guarantees about the iteration order. HashMap绝对不保证迭代顺序。 It can (and will) even change completely when new elements are added. 当添加新元素时,它甚至可以(并且将)完全改变。 TreeMap will iterate according to the "natural ordering" of the keys according to their compareTo() method (or an externally supplied Comparator). TreeMap将根据其compareTo()方法(或外部提供的Comparator)根据键的“自然排序”进行迭代。 Additionally, it implements the SortedMap interface, which contains methods that depend on this sort order. 此外,它还实现了SortedMap接口,该接口包含依赖于此排序顺序的方法。 LinkedHashMap will iterate in the order in which the entries were put into the map LinkedHashMap将按照条目放入地图的顺序进行迭代

Look at how performance varying.. 看看性能如何变化.. 在此输入图像描述

Tree map which is an implementation of Sorted map. 树图是排序图的一种实现。 The complexity of the put, get and containsKey operation is O(log n) due to the Natural ordering 由于自然排序,put,get和containsKey操作的复杂性为O(log n)


#4楼

I prefer visual presentation: 我更喜欢视觉呈现:

╔══════════════╦═════════════════════╦═══════════════════╦═════════════════════╗
║   Property   ║       HashMap       ║      TreeMap      ║     LinkedHashMap   ║
╠══════════════╬═════════════════════╬═══════════════════╬═════════════════════╣
║ Iteration    ║  no guarantee order ║ sorted according  ║                     ║
║   Order      ║ will remain constant║ to the natural    ║    insertion-order  ║
║              ║      over time      ║    ordering       ║                     ║
╠══════════════╬═════════════════════╬═══════════════════╬═════════════════════╣
║  Get/put     ║                     ║                   ║                     ║
║   remove     ║         O(1)        ║      O(log(n))    ║         O(1)        ║
║ containsKey  ║                     ║                   ║                     ║
╠══════════════╬═════════════════════╬═══════════════════╬═════════════════════╣
║              ║                     ║   NavigableMap    ║                     ║
║  Interfaces  ║         Map         ║       Map         ║         Map         ║
║              ║                     ║    SortedMap      ║                     ║
╠══════════════╬═════════════════════╬═══════════════════╬═════════════════════╣
║              ║                     ║                   ║                     ║
║     Null     ║       allowed       ║    only values    ║       allowed       ║
║ values/keys  ║                     ║                   ║                     ║
╠══════════════╬═════════════════════╩═══════════════════╩═════════════════════╣
║              ║   Fail-fast behavior of an iterator cannot be guaranteed      ║
║   Fail-fast  ║ impossible to make any hard guarantees in the presence of     ║
║   behavior   ║           unsynchronized concurrent modification              ║
╠══════════════╬═════════════════════╦═══════════════════╦═════════════════════╣
║              ║                     ║                   ║                     ║
║Implementation║      buckets        ║   Red-Black Tree  ║    double-linked    ║
║              ║                     ║                   ║       buckets       ║
╠══════════════╬═════════════════════╩═══════════════════╩═════════════════════╣
║      Is      ║                                                               ║
║ synchronized ║              implementation is not synchronized               ║
╚══════════════╩═══════════════════════════════════════════════════════════════╝

#5楼

See where each class is in the class hierarchy in the following diagram ( bigger one ). 在下图中查看每个类在类层次结构中的位置( 较大的一个 )。 TreeMap implements SortedMap and NavigableMap while HashMap doesn't. TreeMap实现了SortedMapNavigableMapHashMap则没有。

HashTable is obsolete and the corresponding ConcurrentHashMap class should be used. HashTable已过时,应使用相应的ConcurrentHashMap类。 在此输入图像描述


#6楼

These are different implementations of the same interface. 这些是同一界面的不同实现。 Each implementation has some advantages and some disadvantages (fast insert, slow search) or vice versa. 每种实现都有一些优点和一些缺点(快速插入,慢速搜索),反之亦然。

For details look at the javadoc of TreeMap , HashMap , LinkedHashMap . 有关详细信息,请查看TreeMapHashMapLinkedHashMap的javadoc。

Geneformer实战:如何用Hugging Face Transformers快速搭建单细胞转录组分类模型 本文详细介绍了如何使用GeneformerHugging Face Transformers快速搭建单细胞转录组分类模型。通过环境准备、数据预处理、模型加载与配置、训练Pipeline构建等步骤,帮助读者掌握基于Transformer架构的单细胞数据分析技术,提升分类准确率效率。 阅读详情

相关推荐

隐语第四课:快速上手-SecretFlow的安装部署

隐语课程,继续学习隐私计算技术

weixin_41467180的博客 2481

LinKedHashMapTreeMap介绍

文章目录前言一、LinKedHashMap源码分析:继承关系:属性:构造器:私有内部类put 方法:LinKedHashMap总结二、TreeMap源码分析:继承关系:属性:构造器:私有内部类方法:TreeMap总结: 前言 我们对LinKedHashMapTreeMap研究都是基于HashMap为参考来研究一下他们独有的特点,维护这些特点的方法。 提示:以下是本篇文章正文内容,下面案例可供参考 一、LinKedHashMap源码分析: LinKedHashMap继承自HashMap<K,V

liangcheng0213的博客 3056

开关电源拓扑结构选型指南:从Buck到Full-Bridge的实战解析

本文为硬件工程师提供了开关电源拓扑结构的实战选型指南。文章系统解析了从基础的Buck、Boost、Buck-Boost,到隔离型的Flyback、Forward,再到中高功率的半桥、全桥以及高效率的LLC谐振拓扑的适用场景与核心特点。通过对比分析各拓扑的优缺点,并结合输入输出电压、功率等级、成本与效率等关键参数,给出了清晰的选型决策路径,帮助工程师根据具体项目需求选择最合适的电源“骨架”。

weixin_29306261的博客 82

数据结构之 LinkedHashMapTreeMap

LinkedHashMapHashMap区别LinkedHashMap底层实现?利用LinkedHashMap实现LRU缓存?大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序。HashMap的这一缺点往往会带来困扰,因为有些场景,我们期待一个有序的Map.这就是我们的LinkedHashMap,看个小Demo: 可以看到,在使用上,LinkedHashMapHashMap

m0_49508485的博客 2327

Java-数据结构(二)-MapHashMapTreeMapLinkedHashMap

MapJava中的一个接口,它代表了一种键值对的映射关系。它允许我们通过Key来访问Value。在Map中,每个Key都是唯一的,而且与该Key对应的Value是一一对应的关系。维度HashMapTreeMap底层实现哈希表红黑树哈希表+链表插入顺序无序无序(基于键的自然排序或自定义排序)保持插入顺序查找效率O(1)O(log n)O(1)迭代顺序无序有序(基于键的自然排序或自定义排序)保持插入顺序或访问顺序键的唯一性允许null键null值。

向诸位大佬虚心学习 8435

LinkedHashMapTreeMap

Map体系中的位置:特点:● 由键决定:有序、不重复、无索引。这里的有序指的是保证存储取出的元素顺序一致原理:底层数据结构是依然哈希表,只是每个键值对元素又额外的多了一个双链表的机制记录存储的顺序,所以有序。

2301_79947226的博客 1539

TreeMapLinkedHashMap

底层是基于红黑树实现,是个有序集合,按照key的compareTo方法或在构造时传入的Comparator比较器进行排序。这里需要注意如果在构造 时没有传入Comparator,那么key必须实现Comparable接口,不然会报错TreeMap是通过Comparator比较器来构建红黑树从而保证key的有序性,而LinkedHashMap是通过双向链表来保证元素插入的有序性,两者有序性的含义不是一样的。

星坠竹空 1973

HashMap、HashTable、LinkedHashMapTreeMap之间区别

名称 HashMap LinkedHashMap TreeMap 共同点 线程不安全 线程不安全 线程不安全 不同点 数据无序 数据有序 数据有序还可以对数据进行排序 数据结构 数组+链表+红黑树(在JDK1.8中如果链表长度大于8的时候才转换为红黑树,平常不是) 双向链表+HashMap 红黑树 1.HashMap是一个最常用的Map,它根据键的hashCode...

T_testView的博客 5768

java hashmaptreemap_HashMapLinkedHashMapTreeMap之间区别

问题Java中的 HashMapLinkedHashMap TreeMap 有什么区别?我没有看到它们有任何输出差异,因为它们都有keySetvalues。什么是 Hashtable?Map m1 = new HashMap();m1.put("map", "HashMap");m1.put("schildt", "java2");m1.put("mathew", "Hyden");m1....

weixin_39520149的博客 194

HashMapLinkedHashMap、HashtableTreeMap之间区别

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34295316的博客 90

HashMap、Hashtable、LinkedHashMap TreeMap之间区别

HashMap、Hashtable、LinkedHashMap TreeMap之间区别 Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为

忆江南的博客 1169

JAVA-HashMap,LinkedHashMap,TreeMap之间区别运用

package cn.project.demo; public class People { public String name; public int no; public int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNo() { return no; } pub.

英雄主义 385

HashMapLinkedHashMapTreeMap之间区别联系(简要)

HashMapLinkedHashMapTreeMap之间区别联系 HashMap:常用;根据键访问值,速度比较快;允许键为空、值为空;非线程安全(可使用ConcurrentHashMap或Collectoins.synchornizedxxx());遍历是无序的 Collections 集合(Collection是基本接口)访问的工具类 Collectoins.synchornizedxxx()可将非线程安全的list set map转化成线程安全的集合,转化方式Hashtable一样(syn

qq_41571459的博客 734

LinkedHashMaphashMapTreeMap区别

1、区别 LinkedHashMap继承于HashMap,基于HashMap双向链表来实现的。 HashMap无序;LinkedHashMap有序 LinkedHashMap是线程不安全的。 2、应用 HashMap 插入顺序 hashMap.put("name1", "josan1"); hashMap.put("name2", "josan2"); hashMap.put...

剑来 2236

JavaHashMap,LinkedHashMap,TreeMap区别

Java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap TreeMap Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。HashMapHashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,

zhencheng20082009的专栏 476

HashMap,LinkedHashMap,TreeMap区别

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写Hash

zkp0601的专栏 4646

javaHashMap,LinkedHashMap,TreeMap,HashTable的区别

 java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap TreeMap  Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。  Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问

suyan_why的博客 213

maphashmaptreemaplinkedhashmap 的联系、区别、以及适合的应用场景

myeclipse 的 ctrl+h 搜索时, 搜索到一半,报错 &amp;quot;File Search&amp;quot; has encounter a problem。。。报错原因:解决办法: 报错原因: myeclipse载入的文件workspace对应文件夹里的文件不一致。 (在workspace文件夹下改了某个文件,但是在myeclipse里没有刷新) 解决办法: myeclipse中右键项目-》选refresh,...

IcyWang1的博客 797

HashMap Hashtable LinkedHashMap TreeMap

import java.util.HashMap;   import java.util.Hashtable;   import java.util.LinkedHashMap;   import java.util.Map;   import java.util.TreeMap;   import java.util.Map.Entry;         public class

Codelong的专栏 543

【面试题】简述一下javaHashMap、Hashtable、LinkedHashMapTreeMap区别与联系

HashMapJava程序员使用频率最高的用于映射(键值对)处理的数据类型。 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类分别是HashMap、Hashtable、LinkedHashMapTreeMap,类继承关系如下图所示: 这几个实现类的区别与联系可以总结为以下几点: 1)HashMap: 非线程安全,是根据键的hashCode值来存...

weixin_43230682的博客 356
上一篇: 从pandas DataFrame列标题获取列表
下一篇: 如何显示我的全局Git配置?
w36680130
博客等级 码龄8年 161粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值