• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > Java Map简介_动力节点Java学院整理

Java Map简介_动力节点Java学院整理

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了java map,java map遍历,java map用法,java map详解,java map集合等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Map简介

将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。

 Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如HashMap 类。

注:将可变对象用作映射键时必须格外小心。当对象是映射中某个键时,如果以影响 equals 比较的方式更改了对象的值,则映射的行为将是不确定的。此项禁止的一种特殊情况是不允许某个映射将自身作为一个键包含。虽然允许某个映射将自身作为值包 含,但请格外小心:在这样的映射上 equals 和 hashCode 方法的定义将不再是明确的。

Map 接口:

 Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。  

Hashtable类     

Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。    

添加数据使用put(key,  value),取出数据使用get(key),这两个基本操作的时间开销为常数。Hashtable通过initial  capacity和load  factor两个参数调整性能。通常缺省的load  factor  0.75较好地实现了时间和空间的均衡。增大load  factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。  

使用Hashtable的简单示例如下,将1,2,3放到Hashtable中,他们的key分别是”one”,”two”,”three”: 

Hashtable numbers = new Hashtable(); 
numbers.put(“one”, new Integer(1)); 
numbers.put(“two”, new Integer(2)); 
numbers.put(“three”, new Integer(3));
</div>

  要取出一个数,比如2,用相应的key: 

Integer n = (Integer)numbers.get(“two”); 
System.out.println(“two = ” + n);
</div>

 由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置,因此任何作为key的对象都必须实现hashCode和equals方法。hashCode和equals方法继承自根类Object,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个对象相同,即obj1.equals(obj2)=true,则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同,如果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,能加快哈希表的操作。     

如果相同的对象有不同的hashCode,对哈希表的操作会出现意想不到的结果(期待的get方法返回null),要避免这种问题,只需要牢记一条:要同时复写equals方法和hashCode方法,而不要只写其中一个。

 Hashtable是同步的。 

 HashMap类  

HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null  value和null  key。,但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load  factor过低。   

 WeakHashMap类  

WeakHashMap是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收。

以上所述是小编给大家介绍的Java Map简介_动力节点Java学院整理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java本地缓存的实现代码
  • Java Map简介_动力节点Java学院整理
  • Java实现一个简单的缓存方法
  • Java Map 在put值时value值不被覆盖的解决办法
  • java反射遍历实体类属性和类型,并赋值和获取值的简单方法
  • java 中Map详解及实例代码
  • Java本地缓存的实现代码
  • Java Map简介_动力节点Java学院整理
  • Java实现一个简单的缓存方法
  • Java Map 在put值时value值不被覆盖的解决办法

相关文章

  • 2017-05-28详解Spring-Boot集成Spring session并存入redis
  • 2017-05-28Eclipse 开发java 出现Failed to create the Java Virtual Machine错误解决办法
  • 2017-05-28Java中的FilterOutputStream 简介_动力节点Java学院整理
  • 2017-05-28Java数据结构和算法之冒泡排序(动力节点Java学院整理)
  • 2017-05-28Java微信公众平台开发(8) 多媒体消息回复
  • 2017-05-28spring cglib 与 jdk 动态代理
  • 2017-05-28Java中的PrintWriter 介绍_动力节点Java学院整理
  • 2017-05-28Java二分法查找_动力节点Java学院整理
  • 2017-05-28Spring Boot 项目发布到 Tomcat 服务器的操作步骤
  • 2017-05-28利用Spring boot如何创建简单的web交互应用

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • java实现word文件转html文件
    • 详解SpringBoot配置devtools实现热部署
    • spring整合redis缓存并以注解(@Cacheable、@CachePut、@CacheEvict)形式使用
    • 详解SpringBoot多跨域请求的支持(JSONP)
    • Java基本数据类型与对应的包装类(动力节点java学院整理)
    • 深入理解java泛型详解
    • 详解在Spring Boot中使用JPA
    • JVM 方法调用之动态分派(详解)
    • Java实现数组反转翻转的方法实例
    • 详解Java中接口的定义与实例代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有