Map简介

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

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

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

  所有通用的映射实现类应该提供两个“标准的”构造方法:一个 void(无参数)构造方法,用于创建空映射;一个是带有单个 Map 类型参数的构造方法,用于创建一个与其参数具有相同键-值映射关系的新映射。实际上,后一个构造方法允许用户复制任意映射,生成所需类的一个等价映射。尽管无法强制执行此建议(因为接口不能包含构造方法),但是 JDK 中所有通用的映射实现都遵从它。

  此接口中包含的“破坏”方法可修改其操作的映射,如果此映射不支持该操作,这些方法将抛出 UnsupportedOperationException。如果是这样,那么在调用对映射无效时,这些方法可以(但不要求)抛出 UnsupportedOperationException。例如,如果某个不可修改的映射(其映射关系是“重叠”的)为空,则对该映射调用 putAll(Map) 方法时,可以(但不要求)抛出异常。

  某些映射实现对可能包含的键和值有所限制。例如,某些实现禁止 null 键和值,另一些则对其键的类型有限制。尝试插入不合格的键或值将抛出一个未经检查的异常,通常是 NullPointerException 或 ClassCastException。试图查询是否存在不合格的键或值可能抛出异常,或者返回 false;某些实现将表现出前一种行为,而另一些则表现后一种。一般来说,试图对不合格的键或值执行操作且该操作的完成不会导致不合格的元素被插入映射中时,将可能抛出一个异常,也可能操作成功,这取决于实现本身。这样的异常在此接口的规范中标记为“可选”。

  此接口是 Java Collections Framework 的成员。

  Collections Framework 接口中的很多方法是根据 equals 方法定义的。例如,containsKey(Object key) 方法的规范中写道:“当且仅当此映射包含针对满足 (key==null ? k==null : key.equals(k)) 的键 k 的映射关系时,返回 true”。不 应将此规范解释为:调用具有非空参数 key 的 Map.containsKey 将导致对任意的键 k 调用 key.equals(k)。实现可随意进行优化,以避免调用 equals,例如,可首先比较两个键的哈希码(Object.hashCode() 规范保证哈希码不相等的两个对象不会相等)。一般来说,只要实现者认为合适,各种 Collections Framework 接口的实现可随意利用底层 Object 方法的指定行为。

  常用操作说明

  void clear()

  从此映射中移除所有映射关系(可选操作)。

  boolean containsKey(Object key)

  如果此映射包含指定键的映射关系,则返回 true。

  boolean containsValue(Object value)

  如果此映射将一个或多个键映射到指定值,则返回 true。

  Set<Map.Entry<K,V>> entrySet()

  返回此映射中包含的映射关系的 Set 视图。

  boolean equals(Object o)

  比较指定的对象与此映射是否相等。

  V get(Object key)

  返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。

  int hashCode()

  返回此映射的哈希码值。

  boolean isEmpty()

  如果此映射未包含键-值映射关系,则返回 true。

  Set<K> keySet()

  返回此映射中包含的键的 Set 视图。

  V put(K key, V value)

  将指定的值与此映射中的指定键关联(可选操作)。

  void putAll(Map<? extends K,? extends V> m)

  从指定映射中将所有映射关系复制到此映射中(可选操作)。

  V remove(Object key)

  如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。

  int size()

  返回此映射中的键-值映射关系数。

  Collection<V> values()

  返回此映射中包含的值的 Collection 视图。

Map的一般用法

1.声明一个Map:

Map map = new HashMap();

2.向map中放值,注意: map是key-value的形式存放的,如:

map.put("sa","dd");

3.从map中取值:

String str = map.get("sa").toString,

结果是: str = "dd'

4.遍历一个map,从中取得key和value:

Map m= new HashMap();

for(Object obj : map.keySet()){

Object value = map.get(obj );

}

转载于:https://www.cnblogs.com/haimishasha/p/5351645.html

Java Map用法相关推荐

  1. Go程序:演示map用法

    Go程序:演示map用法 在C++/Java中,map一般都以库的方式提供,比如在C++中是STL的std::map<>,在C#中是 Dictionary<>,在Java中是H ...

  2. java反射用法示例_Java反射示例教程

    java反射用法示例 Java Reflection provides ability to inspect and modify the runtime behavior of applicatio ...

  3. java map包_java Map

    java Map CreateTime--2017年5月26日08:44:16 Author:Marydon 四.java数据类型之Map 需要导入包: importjava.util.Map;imp ...

  4. Java map 知识

    Java map: Map 接口中键和值一一映射. 可以通过键来获取值 map 的方法如下: 序号 方法描述 1 void clear( )  从此映射中移除所有映射关系(可选操作). 2 boole ...

  5. java map 教程_Java Map接口

    Java Map接口 在本教程中,我们将学习Java Map接口及其方法. Java collections框架的Map接口提供了Map数据结构的功能. 它实现了Collection接口. map的工 ...

  6. java resume过时方法_学点开发|关于Java多线程用法解析

    在进行学习之前,我们先来了解下,什么是Java多线程: 多线程是实现并发机制的一种有效手段.进程和线程一样,都是实现并发的一个基本单位.为了让大家更清晰读懂关于Java多线程用法,由以下几点入手学,帮 ...

  7. 有关于Java Map,应该掌握的8个问题

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:一个线程池 bug 引发的 GC 思考!个人原创+1博客:点击前往,查看更多 前言 最近几天看了几篇有关于Jav ...

  8. c++ map用法_Pandas数据处理三板斧——map、apply、applymap详解

    在日常的数据处理中,经常会对一个DataFrame进行逐行.逐列和逐元素的操作,对应这些操作,Pandas中的map.apply和applymap可以解决绝大部分这样的数据处理需求.这篇文章就以案例附 ...

  9. boost::fusion::map用法的测试程序

    boost::fusion::map用法的测试程序 实现功能 C++实现代码 实现功能 boost::fusion::map用法的测试程序 C++实现代码 #include <boost/fus ...

最新文章

  1. 在iis中让asp.net的错误显示在远程访问电脑中
  2. 用ABAP代码读取S/4HANA生产订单工序明细 1
  3. Web Form要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。”的解决办法。...
  4. div+css 单行或者多行超出文本,数字,字母长度自动省略
  5. 可行后继路由,可行条件和报告距离
  6. 【NOIP初赛】【Luogu1787】普及组2013(洛谷初赛题提交水AC方法了解一下)
  7. python爬虫框架
  8. java并发编程简单分析
  9. openssl学习之ccm,gcm 模式
  10. grid lightbox gallery
  11. 计算机系统中文件命名的,你电脑上的文件命名规范吗
  12. 2017 CCCC预赛总结
  13. 辽宁教师计算机能力提升,辽宁省中学教师信息化教学能力的现状分析与提升策略研究...
  14. LPC1768PWM实验
  15. 杂谈:倘若flash支持JPEG XR格式?
  16. chart控件两个Y轴
  17. 6010dn 华为 组网 胖ap_华为企业级WIFI6 FAT AP(胖AP) 一览
  18. Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915解决办法
  19. 导航网站服务器,gps导航云服务器
  20. 2016年第一季度总结

热门文章

  1. 多线程中 start()和run()方法的区别
  2. 计算机与编程导论,计算机科学与编程导论
  3. STM32 串口接收流程-串口接收中断
  4. Redis中使用Lua语言
  5. C++ pair类模板
  6. Java注释:类、方法和字段注释
  7. dubbo官方文档_狂神说SpringBoot17:Dubbo和Zookeeper集成
  8. 【OpenCV 例程200篇】18. 图像的掩模加法
  9. C++对象数组与对象指针
  10. HTML文本下划线效果,聊聊CSS中文本下划线_CSS, SVG, masking, clip-path, 会员专栏, text-decoration 教程_W3cplus...