map用法

转自:http://blog.163.com/xx_jun_/blog/static/208275209201262693422730/

————————————————————————————————————————————————————————

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/kaikailele/p/3941369.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab计算位温,大气物理学复习资料

大气物理学复习资料第一部分名词解释第一章大气概述1、干洁大气&#xff1a;通常把除水汽以外的纯净大气称为干结大气&#xff0c;也称干空气。2、气溶胶&#xff1a;大气中悬浮着的各种固体和液体粒子。3、气团&#xff1a;水平方向上物理属性比较均匀的巨大空气块。4、气团变…

2015第23周五

如何提升你的能力&#xff1f;给年轻程序员的几条建议文中提到的几个建议不错&#xff1a; 1、打造你的工具箱 工欲善其事&#xff0c;必先利其器。每个开发者都应该有一把自己的瑞士军刀&#xff0c;在将来漫长的职业生涯中&#xff0c;这些工具可以为你省下宝贵的时间&#x…

Docker搭建便捷的开发者环境

你可能遇到这样的场景&#xff1a;开发软件时&#xff0c;需要像数据库(mysql,mongodb)、消息系统(rabbitmq)、缓存服务&#xff08;redis&#xff09;等其它依赖服务。当然我们可以找台机器&#xff0c;一步步安装依赖&#xff0c;然后把所有依赖的服务都安装好&#xff0c;这…

php环境编译成品,PHPweb成品网站安装环境要求和安装方法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼[安装环境要求]虚拟主机或在自备服务器中开设好的主机空间&#xff0c;主机环境要求&#xff1a;PHP4.3.x-5.2.x/非安全模式/允许WEB文件上传MYSQL4.2-5.xzend optimizer 3.2以上(备注:PHP5.3 需要Zend Guard Loader,一般虚拟主机都…

第二个Spring冲刺周期团队进展报告

5.26 之前完成&#xff1a;手电筒基本功能实现&#xff1b; 今日任务&#xff1a;主界面的设计&#xff1b; 遇到的问题&#xff1a;在一个activity中实现界面的跳转&#xff1b; 5.27 昨天完成&#xff1a;主界面的设计&#xff1b; 今日任务&#xff1a;警示灯…

BZOJ-1034 泡泡堂

田忌赛马问题。。。 先弱打弱&#xff0c;不行的话强打强&#xff0c;都不行的话弱打强。。。 就这样。。。 【Code】 转载于:https://www.cnblogs.com/NanoApe/p/4396738.html

php 接口怎么响应,Stripe PHP API方法响应的结构是什么?

我正在进行Stripe集成,我对从PHP API获得的实际响应感到困惑.我开始相信API参考是准确的,并且响应将是每个方法所示的JSON字符串.我很快发现了显着的差异.大多数情况下,JSON响应中缺少id字段.此外,响应似乎是一个字符串,一个对象,也许还有其他一些结构,所有这些都在同一时间.这…

unix-ln 命令

指令名称 : ln 使用权限 :所有使用者 使用方式 : ln [options] source dist&#xff0c; 其中 option 的格式为 : [-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}] [--help] [--version] [--] 说明 : Linux/Unix 档案系统中&#xff0c;有所谓的链接(link)&am…

jQuery 1

<!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>jQuery鼠标事件</title><script src"…

javascript php 性能,浅谈页面装载js及性能分析方法_javascript技巧

一、装载先装载静态页面的引用js文件&#xff0c;然后查找引用文件中是否包含onload函数&#xff0c;比如main.js中包含onload函数&#xff0c;在main.js中查找是否有对其他js文件的引用&#xff0c;优先装载引用js文件&#xff0c;被引用中文件的装载顺序和main.js的顺序一致。…

python计算机视觉2:图像边缘检测

我是一名初学者&#xff0c;如果你发现文中有错误&#xff0c;请留言告诉我&#xff0c;谢谢 如果需要检测到图像里面的边缘&#xff0c;首先我们需要知道边缘处具有什么特征。 对于一幅灰度图像来说&#xff0c;边缘两边的灰度值肯定不相同&#xff0c;这样我们才能分辨出哪里…

Java集合---Arrays类源码解析

一、Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序。其中主要分为Primitive(8种基本类型)和Object两大类。 基本类型&#xff1a;采用调优的快速排序&#xff1b; 对象类型&#xff1a;采用改进的归并排序。 1、对于基本类型源码分析如下&#xff08;以int[]为例…

oracle12c多个pdb,ProxmoxVE 之 oracle12C 多CDB和PDB

上面左边是我的个人微信&#xff0c;如需进一步沟通&#xff0c;请加微信。 右边是我的公众号“Openstack私有云”&#xff0c;如有兴趣&#xff0c;请关注。继上次在PVE环境上搭建了oracle12C RAC环境(请参考博文“ProxmoxVE 之 安装oracle12C rac集群”)并且安装使用CDB和PD…

【Pascal's Triangle II 】cpp

题目&#xff1a; Given an index k, return the kth row of the Pascals triangle. For example, given k 3,Return [1,3,3,1]. Note:Could you optimize your algorithm to use only O(k) extra space? 代码&#xff1a; class Solution { public:vector<int> getRow…

【DP】HDU 2189 悼念512汶川大地震遇难同胞——来生一起走

打一个小于150的素数表 为了分成的组的人数不重复用dp[i][j] 表示 i表示i个人 j表示分成的组内的最大素数序号 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <string> #include <iostream> #…

oracle高资源消耗sql,Oracle高资源消耗SQL语句定位

Oracle SQL语句资源消耗监控最常用的系统视图有v$sql、v$sqlarea、v$sqltext和v$session。本文我们先了解这些视图的作用与区别&#xff0c;然后了解如何定位高资源消耗SQL语句&#xff0c;最后再了解一下各视图字段具体含义。相关系统视图功能与区别v$sql和v$sqlarea基本相同&…

JavaScript动画知多少?

今天&#xff0c;小学生以自己浅薄的见地&#xff0c;在前辈大能的基础上写这篇文章&#xff0c;希望给大家打开一扇窥探JavaScript&#xff08;以下简称JS&#xff09;动画的窗户。 JS如何制造出动画效果&#xff1f; 结合浏览器提供的 setInterval 或 setTimeout API&#xf…

Socket网络编程--简单Web服务器(6)

本来是想实现ssl连接的&#xff0c;但是弄了好久都不成功&#xff0c;就索性不做了&#xff0c;等以后有能力再做了。所以这一小节就是本次的最后一节了。就简单的说几个注意点。 1.加个配置文件 使用单例模式&#xff0c;使用一个类&#xff0c;该类保存一些信息&#xff0c;例…

postgresql调优

http://blog.pgaddict.com/posts/performance-since-postgresql-7-4-to-9-4-pgbench硬件和系统配置操作系统Ubuntu13.04系统位数64CPUIntel(R) Core(TM)2 Duo CPU内存4G硬盘Seagate ST2000DM001-1CH164测试工具PostgreSQL-9.1.11测试工具工具名称pgbench数据量200W&#xff08;…

操作系统--进程状态切换以及cpu调度(转)

http://www.cnblogs.com/coder2012/p/3204730.html 进程的状态转换 进程在运行中不断地改变其运行状态。通常&#xff0c;一个运行进程必须具有以下三种基本状态。 进程状态 执行态run&#xff1a;进程正在使用CPU等待态wait&#xff1a;进程正在等待I/O完成&#xff0c;不在使…