HashMap Hashtable LinkedHashMap 和TreeMap 区别

HashMap Hashtable LinkedHashMap 和TreeMap
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap
 Map主要用于存储健值对,根据键得到值,因此不允许键重复,但允许值重复。
Hashmap 是一个 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力.
Hashtable 与 HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。
LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。
TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。
public class TestMap {
 
 /**
  * 初始化一个Map
  * @param map
  */
 public static void init(Map map){
  if (map != null){
   String key = null;
   for (int i=5; i>0; i--){
    key = new Integer(i).toString() + ".0";
    map.put(key, key.toString());
    //Map中的键是不重复的,如果插入两个键值一样的记录,
    //那么后插入的记录会覆盖先插入的记录
    map.put(key, key.toString() + "0");   }
  }
 }
 /**
  * 输出一个Map
  * @param map
  */
 public static void output(Map map){
  if (map != null){
   Object key = null;
   Object value = null;
   //使用迭代器遍历Map的键,根据键取值
   Iterator it = map.keySet().iterator();
   while (it.hasNext()){
    key = it.next();
    value = map.get(key);
    System.out.println("key: " + key + "; value: " + value );
   }
   //或者使用迭代器遍历Map的记录Map.Entry
   Map.Entry entry = null;
   it = map.entrySet().iterator();
   while (it.hasNext()){
    //一个Map.Entry代表一条记录
    entry = (Map.Entry)it.next();
    //通过entry可以获得记录的键和值
    //System.out.println("key: " + entry.getKey() + "; value: " + entry.getValue());
   }
  }
 }
 /**
  * 判断map是否包含某个键
  * @param map
  * @param key
  * @return
  */
 public static boolean containsKey(Map map, Object key){
  if (map != null){
   return map.containsKey(key);
  }
  return false;
 }
 /**
  * 判断map是否包含某个值
  * @param map
  * @param value
  * @return
  */
 public static boolean containsValue(Map map, Object value){
  if (map != null){
   return map.containsValue(value);
  }
  return false;
 }
 /**
  * 演示HashMap
  */
 public static void testHashMap(){
  Map myMap = new HashMap();
  init(myMap);
  //HashMap的键可以为null
  myMap.put(null,"ddd");
  //HashMap的值可以为null
  myMap.put("aaa", null);
  output(myMap);
 }
 /**
  * 演示Hashtable
  */
 public static void testHashtable(){
  Map myMap = new Hashtable();
  init(myMap);
  //Hashtable的键不能为null
  //myMap.put(null,"ddd");
  //Hashtable的值不能为null
  //myMap.put("aaa", null);
  output(myMap);
 }
 /**
  * 演示LinkedHashMap
  */
 public static void testLinkedHashMap(){
  Map myMap = new LinkedHashMap();
  init(myMap);
  //LinkedHashMap的键可以为null
  myMap.put(null,"ddd");
  //LinkedHashMap的值可以为null
  myMap.put("aaa", null);
  output(myMap);
 }
 /**
  * 演示TreeMap
  */
 public static void testTreeMap(){
  Map myMap = new TreeMap();
  init(myMap);
  //TreeMap的键不能为null
  //myMap.put(null,"ddd");
  //TreeMap的值不能为null
  //myMap.put("aaa", null);
  output(myMap);
 }

 public static void main(String[] args) {
  System.out.println("采用HashMap");
  TestMap.testHashMap();
  System.out.println("采用Hashtable");
  TestMap.testHashtable();
  System.out.println("采用LinkedHashMap");
  TestMap.testLinkedHashMap();
  System.out.println("采用TreeMap");
  TestMap.testTreeMap();
 
  Map myMap = new HashMap();
  TestMap.init(myMap);
  System.out.println("新初始化一个Map: myMap");
  TestMap.output(myMap);
  //清空Map
  myMap.clear();
  System.out.println("将myMap clear后,myMap空了么?  " + myMap.isEmpty());
  TestMap.output(myMap);
  myMap.put("aaa", "aaaa");
  myMap.put("bbb", "bbbb");
  //判断Map是否包含某键或者某值
  System.out.println("myMap包含键aaa?  "+ TestMap.containsKey(myMap, "aaa"));
  System.out.println("myMap包含值aaaa?  "+ TestMap.containsValue(myMap, "aaaa"));
  //根据键删除Map中的记录
  myMap.remove("aaa");
  System.out.println("删除键aaa后,myMap包含键aaa?  "+ TestMap.containsKey(myMap, "aaa"));
  //获取Map的记录数
  System.out.println("myMap包含的记录数:  " + myMap.size());

杰理SDK入门教程(一):SDK的四种编译方式的使用 杰理SDK提供了四种主要编译方式:1) JL Studio官方IDE,适合初学者;2) VS Code轻量级编辑器,需在SDK根目录打开;3) 命令行/脚本编译,灵活支持自动化;4) Code::Blocks开源IDE。每种方式都有详细操作指南,开发者可根据需求选择,初学者推荐从JL Studio开始熟悉编译流程。环境配置注意事项和编译成功标识均有明确说明,确保开发效率。 阅读详情

相关推荐

Windows事件ID 10010报错:DCOM注册超时与Game Bar修复指南

DCOM(分布式组件对象模型)是Windows中用于跨进程组件通信的核心机制,其注册超时问题常表现为事件ID 10010报错。当Game Bar的PresenceWriter组件因权限配置不当、组件损坏或开机资源竞争而无法在限定时间内向DCOM注册时,系统会记录该错误,并可能伴随DCOM服务主机CPU占用升高或游戏栏功能异常。理解DCOM激活原理与Network Service账户权限,有助于从权限修复、组件重注册及开机时序优化等层面系统排查。本文针对不同Windows版本,提供从静默处理到根治的完整方案,

weixin_33563728的博客 909

HashMap、LinkedHashMap、Hashtable和TreeMap

Map的实现类有HashMap、LinkedHashMap、Hashtable、TreeMap 1、HashMap jdk1.7数组 链表 jdk1.8数组 链表 红黑树 线程不安全 效率高 可以存null的key value 键值对结构 实现原理: 当存入一个数据时,会创建一个容量为16的数组,加载因子默认为0.75,当同一个位置上有多个元素时,会形成链表结构,当链表长度大于8且数组长度大于64时会将链表转换为红黑树 扩容机制:当容量达到容量*加载因子时 会自动扩容,扩容容量为原容量的2倍...

qq_40432425的博客 299

Synopsys PCIe IP 实战笔记:手把手教你配置本地数字回环(PIPE/RMMI)

本文详细介绍了Synopsys PCIe IP本地数字回环(PIPE/RMMI)的配置与调试全流程,涵盖硬件连接、寄存器操作及实战技巧。通过数字回环模式,开发者可在无真实对端设备的情况下验证PCIe接口功能,适用于芯片验证和FPGA原型开发。文章还提供了常见问题排查和性能优化建议,助力高效完成协议解析与调试。

weixin_30394669的博客 323

HashMap、TReeMAp、LinkedHashMap/Hashtable

(1) HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速 度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap 非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要满足线程安全, 可以用 Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap。 (2) .

weixin_43722062的博客 298

利用netmq在相机应用于unity之间传输图像数据

Unity工业相机接入方案解析 本文探讨了在Unity中接入不同品牌工业相机的技术方案。研究发现: Basler相机可直接调用官方DLL(pylonc.net.dll)实现接入 海康和大恒相机因驱动DLL依赖C++组件,无法直接调用 解决方案:通过独立进程(相机应用程序)与Unity进行通信,采用NetMQ实现图像数据传输 技术实现要点: 相机端:使用PublisherSocket发布JPEG图像帧 Unity端:通过SubscriberSocket订阅图像数据 优化:设置高水位线控制缓存帧数,避免数据堆积

weixin_46450859的博客 417

博途WinCC多语言项目配置指南

在博途(TIA Portal)中为WinCC项目配置多语言功能,需通过系统化步骤实现界面文本的动态切换。

dhaimo的博客 2470

HashMap、HashTable、LinkedHashMap和TreeMap

java为数据结构中的映射定义了一个接口java.util.Map, 它有四个实现类,分别是HashMap、HashTable、LinkedHashMap和TreeMap。本节实例主要介绍这4中实例的用法和区别。 关键技术剖析: Map用于存储键值对,根据键得到值,因此不允许键重复,值可以重复。 l  (1)HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可

fu_manxing的专栏 386

AI 帮我写单测:pytest 覆盖率提升 40% 的协作日志

AI助力pytest测试覆盖率提升40%的实践总结 本文分享了作者通过AI协作提升Python项目测试覆盖率的实践经验。初始测试覆盖率仅45%的电商后端项目,通过系统化的AI协作策略(代码分析、场景矩阵设计、迭代优化)实现了显著改进。AI不仅生成312个高质量测试用例,更提供了测试设计思路和最佳实践建议。最终覆盖率提升至85%,发现并修复23个潜在bug,效率提升3倍。文章详细展示了用户服务、订单服务等核心模块的测试案例,以及分层Fixture设计、参数化测试等高级技巧。关键成功因素包括明确的协作边界、迭代

摘星编程的博客 3277

集合HashMap、TreeMap、HashTable、LinkedHashMap

Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示: 下面针对各个实现类的特点做一些说明: (1) HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 Has...

lwx675652056的博客 503

virtuoso根据原理图绘制版图并联接_virtuoso画原理图

Virtuoso Schematic Editor 电路仿真一、Virtuoso Schematic Editor 实验目的:掌握电原理图(schematic)设计输入方法。 [1]启动 IC Design 软件 启动 软件: 开机后运行......2.绘制原理图 新建工程后打开的是默认的原理图文件 SCHEMATIC1 PAG...存盘 完成原理图的绘制后,将原理图存盘. 三 . 用 Check...

weixin_33536190的博客 4144

第四部分:VTK常用类详解(第96章 vtkCaptionActor2D标题演员类)

VTK标题演员实现3D场景标注功能 摘要:vtkCaptionActor2D是VTK可视化工具包中的标题标注组件,提供混合2D/3D的文本标注功能。该组件通过连接线将文本标注与场景中的3D点关联,支持多行文本显示、自定义文本样式和动态定位。文章详细介绍了标题演员的设计原理、坐标系统控制方法、文本内容管理和大小自适应机制,并展示了在3D模型标注、数据可视化和交互场景中的典型应用。标题演员通过组合文本、边框和连接线组件,实现了灵活多样的场景标注方案,是科学计算可视化中重要的标注工具。

仰望星空的博客 255

java面试整理(四)—— HashMap、LinkedHashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别

HashMap HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键(HashMap最多只允许一条记录的键为null,允许多条记录的值为null。)。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 HashMap中不允许出现重复的键(Key) Hashmap是非线程安全的,如果多个线程同时访问一个HashMap,可能会导致数...

落尘 9783

华为数字化转型之道 方法篇 第五章 视IT为投资,用产品思维管理IT

比较传统信息化和数字化转型下的IT系统特征,我们发现业务环境、IT能力、业务和IT的关系都发生了巨大的变化(见图5-1)从“管理系统”到“作业平台”。企业通常的做法是将线下的文档、流程线上化,IT系统是作为管理系统而存在的。而面向数字化,企业的业务作业、业务运营和决策、团队协同等业务动作已经和IT系统集成,IT系统逐步转变为作业系统。从“功能优先”到“体验优先”,如果要整体完成一项工作往往需要用户在不同系统间切换,费时费力。

沧海之巅的专栏 1094

Hashtable、HashMap 与 HashTable区别、HashMap、Hashtable和TreeMap、 LinkedHashMap

Hashtable、HashMap 与 HashTable区别、HashMap、Hashtable和TreeMap、 LinkedHashMap

↫/(ㄒoㄒ)/~~不太会打代码的搬运工↬ 929

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

HashMap、HashTable、LinkedHashMap和TreeMap之间的区别

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

T_testView的博客 5772

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

HashMap、HashTable、LinkedHashMap和TreeMap及ConcurrentHashMap用法和区别

Java为数据结构中的映射定义了一个接口java.util.Map,其由诸多实现类,其中四个实现类分别是**HashMap、HashTable、LinkedHashMap和TreeMap**。 **Map用于存储键值对,根据键得到值,因此不允许键重复,值可以重复。** # **【1】定义与特性** ## **① HashMap** HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。 HashMap最多只允许一条记录的键.

小小默:进无止境 1604

HashMap、Hashtable、TreeMap、LinkedHashMap、IdentityHashMap、ConcurrentHashMap和WeakHashMap的区别

一、Map概述 java为数据结构中的映射定义了一个接口java.util.Map;它有三个实现类,分别是HashMap、Hashtable 和TreeMap. Map是用来存储键值对的数据结构,在数组中通过数组下标来对其内容进行索引的,而在Map中,则是通过对象来进行索引,用来索引的对象叫做key,其对应的对象叫value。   二、类图   注:以下说的无序的意思是指不会记录插...

qq_36470686的博客 1541

4、HashMap、Hashtable、LinkedHashMap、TreeMap和WeakHashMap的区别与联系

小景哥哥博客 HashMap、Hashtable、LinkedHashMap、TreeMap和WeakHashMap的区别与联系 HashMap是一个散列表,它存储的内容是键值对(key-value)映射。HashMap继承于AbstractMap,实现了Map、Cloneable、Serializable接口。HashMap的实现不是同步的,所以它不是线程安全的。它的Key、value都可以为null。此外,HashMap的映射不是有序的。JDK1.8之后,相同hash值的元素大于8时,存储结构由原来的链

JingLisen的博客 292

HashMap Hashtable LinkedHashMap 和TreeMap区别

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

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 378

Java中HashMap、Hashtable、LinkedHashMap、TreeMap特点和区别

Java中HashMap、Hashtable、LinkedHashMap、TreeMap特点和区别

weixin_42263032的博客 760

HashMap、Hashtable、LinkedHashMap 和TreeMap之间的区别

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

忆江南的博客 1172

HashMap、HashTable、LinkedHashMap和TreeMap用法和区别

Java为数据结构中的映射定义了一个接口java.util.Map,它有四个实现类,分别是HashMap、HashTable、LinkedHashMap和TreeMap。本节实例主要介绍这4中实例的用法和区别 关键技术剖析: Map用于存储键值对,根据键得到值,因此不允许键重复,值可以重复。 HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有...

weixin_44473895的博客 195

【面试题】简述一下java中HashMap、Hashtable、LinkedHashMap和TreeMap的区别与联系

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

weixin_43230682的博客 357

HashMap Hashtable LinkedHashMap 和TreeMap区别【转】

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

iteye_10194的博客 153

HashMap、Hashtable、LinkedHashMap 和TreeMap的区别

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

软件测试大叔 260
上一篇: xml简介
下一篇: Comparable和Comparator
xia_andy
博客等级 码龄16年 0粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值