Java Map用法

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

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

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

相关文章

mysql 内联函数_C++之内联函数

C继承C的一个重要特性是效率&#xff0c;在C中保护效率的一个方法是使用宏(macro),宏的实现是使用预处理器而不是编译器&#xff0c;预处理器直接用宏代码替换宏调用&#xff0c;所以就没有了参数压栈、生成汇编语言的CALL、返回参数、执行汇编语言的RETURN的时间花费&#xff…

10桌面管理文件收纳_二十余件精选桌面好物推荐,让学习工作生活满满正能量!...

这些提升办公桌幸福感的好物&#xff0c;能让你的学习与工作正能量满满&#xff01;01 笔记本支架笔记本是为了人们出行方便而设计的&#xff0c;显示器的位置并没有照顾到长期对着显示器码字的人群&#xff0c;许多以笔记本为主力的办公族也被迫成为了低头族。绿巨能(llano)笔…

osm 搭建离线地图_使用离线OSM离线OpenLayers Web应用程序

我m trying to create map based web app which user can set landmark on the provided map. Boundaries of map is limited to a small city, and the client computer is always offline, no internet access at all. After a whole day of googling I已经发现OpenLayers和O…

图像水平梯度和竖直梯度代码_Opencv图像处理(三)

晓强Deep Learning的读书分享会&#xff0c;先从这里开始&#xff0c;从大学开始。大家好&#xff0c;我是晓强&#xff0c;计算机科学与技术专业研究生在读。我会不定时的更新我的文章&#xff0c;内容可能包括深度学习入门知识&#xff0c;具体包括CV&#xff0c;NLP方向的基…

php5 mysql 源_CentOS 7.4使用yum源安装MySQL5.7

从CentOS 7.0发布以来&#xff0c;yum源中开始使用Mariadb来代替MySQL的安装。即使你输入的是yum install -y mysql , 显示的也是Mariadb的安装内容。使用源代码进行编译安装又太麻烦。因此&#xff0c;如果想使用yum安装MySQL的话&#xff0c;就需要去下载官方指定的yum源&…

Thinkphp kindeditor 内容转义

参考了:【解决】ThinkPHP整合Html编辑器时出现自动转义的问题 遇到问题也是保存到数据库中的内容&#xff0c;会转义成“\&quot;” 使用 $data[content] stripslashes(htmlspecialchars_decode($_POST[content])); 可以将"\&quot;"的转义处理好。转载于:htt…

hash 值重复_面试题:HashSet是如何保证元素不重复的

面试官&#xff1a;你能简单介绍List和Set有什么区别吗&#xff1f;小憨&#xff1a;List是一个有序的集合&#xff0c;在内存是连续存储的&#xff0c;可以存储重复的元素&#xff0c;List查询快&#xff0c;增删慢&#xff1b;Set是一个无序的集合&#xff0c;在内存中不连续…

RabbitMQ 原文译03--发布和订阅

发布/订阅 在之前的案例中我们创建了一个工作队列,这个工作队列的实现思想就是一个把每一个任务平均分配给每一个执行者,在这个篇文章我们会做一些不一样的东西,把一个消息发送给多个消费者,这种模式就被称作"发布/订阅". 为了说明这个模式,我们将要创建一个简单的日…

html富文本编辑器插件_vue中使用vuequilleditor富文本编辑器

点击上方“小姚同学技术栈”快速关注我哟&#xff01;vue-quill-editor是一个基于quill、适用于vue的富文本编辑器开源项目&#xff0c;支持服务端渲染和单页应用。目前项目热度还算可以&#xff0c;如果不考虑使用markdown&#xff0c;vue-quill-editor是一个比较好的选择。本…

python面向对象怎么解决_Python面向对象编程1

前言面相对象是Python的重要特性&#xff0c;继承了C的类风格&#xff0c;在Python中的一切数据类型都是面向对象的。本章主要介绍Python的面向对象编程。面向对象&#xff1a;什么是OOP(面向对象)&#xff0c;Object Oriented Programming&#xff0c;原来就是面向对象的编程啊…

二元函数图像生成器_GAN生成图像综述

点击上方“CVer”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达作者&#xff1a;YTimo(PKU EECS) 研究方向&#xff1a;深度学习&#xff0c;计算机视觉本文转载自&#xff1a;SIGAI摘要生成对抗网络(Generative adversarial network, GAN)…

sublime写网页代码,里面的中文字符会出现乱码

经过百度后解决了这个问题: <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>Document</title></head><body>你设置编码了吗&#xff1f;</body></html>追问&#xff1a;没…

mysql 5.5.修改库名_安全快速修改Mysql数据库名的5种方法

1. RENAME DATABASE db_name TO new_db_name这个。。这个语法在mysql 5.1.7中被添加进来&#xff0c;到了5.1.23又去掉了。据说有可能丢失数据。还是不要用的好。详见&#xff1a; http://dev.mysql.com/doc/refman/5.1/en/rename-database.html2.如果所有表都是MyISAM类型的话…

设计模式之禅读书笔记

》设计原则《 》Single Responsibility Principle&#xff08;单一职责原则&#xff09;类只有一个修改的原因。 ●类的复杂性降低&#xff0c;实现什么职责都有明确的定义。 ●可读性高 ●可维护性高 ●变更引起的风险降低。 PS&#xff1a;基本不可能实现 》里氏替换原则&…

mysql mysql_set_charset_SQL注入攻击之 mysql_set_charset [转]

本文转载地址&#xff1a;http://hi.baidu.com/cuttinger/blog/item/e9a93901934755147bec2cb0.html1。老话题&#xff0c;mysql_real_escape_string单引号&#xff0c;大多数情况下&#xff0c;防止sql注入攻击足够了。$mysql mysql_connect("host","user&quo…

idea导入maven项目依赖报错_解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?

1、何为依赖冲突Maven是个很好用的依赖管理工具&#xff0c;但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子&#xff0c;现在你的项目中&#xff0c;使用了两个Jar包&#xff0c;分别是A和B。现在A需要依赖另一个Jar包C&#xff0c;B也需要依赖C。但…

Xilinx实习一年总结

从去年7月4号来到上海xilinx。转眼间已经一年。这一年学了非常多知识&#xff0c;也长了非常多见识。 去年七月一到公司&#xff0c;马上投入到摄像头-DDR-HDMI图像通路的研发中。就是在ZEDboard板卡上。通过外置摄像头採集图像&#xff0c;在PL部分将採集的像素数据进行拼接&a…

java线程创建方式_Java创建线程安全的方法

原文链接 译者&#xff1a;秦建平 校对&#xff1a;方腾飞首先来看一个问题&#xff1a;下面这个方法是线程安全的吗&#xff1f;如何才能让这个方法变成线程安全的&#xff1f;public class MyCount {private static int counter 0;public static int getCount(){return coun…

win7 能下node什么版本_微软从未公开的win10版本,3GB+极度精简,老爷机有救了

在windows家族中&#xff0c;最好用的就是win7和XP系统。堪称经典&#xff0c;而且还是发展最成功的系统版本。前几天韩博士也发布一篇关于XP系统的文章&#xff0c;评论区引发极大争论。大家众说纷纭&#xff0c;觉得XP系统是顺畅&#xff0c;但是很多软件硬件都不支持&#x…

【Swift学习】Swift编程之旅(一)

学习一门新语言最经典的例子就是输出“Hello World&#xff01;” print("Hello World!")  swift就是这样来输出的。 如果你使用过其他语言&#xff0c;那么看上去是非常的熟悉吧。但比一些c要简单的多吧 1、不需要导入一些单独的库&#xff0c;比如输入/输出或字符…