Java集合:Map集合

一、简述

public interface Map<K,V>将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

注意:Map中的集合不能包含重复的键,值可以重复。每个键只能对应一个值。

Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值。

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

注:

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

所有通用的映射实现类应该提供两个“标准的”构造方法:

一个 void(无参数)构造方法,用于创建空映射;

一个是带有单个 Map 类型参数的构造方法,用于创建一个与其参数具有相同键-值映射关系的新映射。

实际上,后一个构造方法允许用户复制任意映射,生成所需类的一个等价映射。尽管无法强制执行此建议(因为接口不能包含构造方法),但是 JDK 中所有通用的映射实现都遵从它。

二、Map接口

public interface Map<K, V>{int size();        //返回此映射中的键-值映射关系数。boolean isEmpty();    //如果此映射未包含键-值映射关系,则返回 true。boolean containsKey(Object key);    //如果此映射包含指定键的映射关系,则返回 true。boolean containsValue(Object value)    //如果此映射将一个或多个键映射到指定值,则返回 true。V get(Object key);     //根据key查找对应value数据,如果没有,则返回 null。V put(K key, V value);    //向集合保存数据可选操作)。V remove(Object key);    //如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。void putAll(Map<? extends K, ? extends V> m); //从指定映射中将所有映射关系复制到此映射中(可选操作)。void clear();    //从此映射中移除所有映射关系(可选操作)。Set<K> KeySet();     //返取出全部key。Collection<V> values();    //返回此映射中包含的值的 Collection 视图。Set<Map, Entry<K, V>> entrySet();    //即将Map集合转化为Set集合。interface Entry<K, V> {K getKey();V getValue();V setValue(V value);boolean equals(Object o);int hashCode();        }boolean equals(Object o);    //比较指定的对象与此映射是否相等。int hashCode();        //返回此映射的哈希码值。
}

三、具体实现

img

接口java.util.Map,包括3个实现类:HashMap、Hashtable、TreeMap。当然还有LinkedHashMap、ConcurrentHashMap 、WeakHashMap。

Map是用来存储键值对的数据结构,键值对在数组中通过数组下标来对其内容索引的,而键值对在Map中,则是通过对象来进行索引,用来索引的对象叫做key,其对应的对象叫value。

四、Map的两种取值方式KeySet、entrySet

(一)KeySet

先获取所有键的集合,再根据键获取对应的值。(即先找到丈夫,再去找妻子)

keySet的演示图解

img

(二)entrySet

先获取map中的键值关系封装成一个个的entry对象, 存储到一个Set集合中,再迭代这个Set集合, 根据entry获取对应的key和value。向集合中存储自定义对象(entry类似于是结婚证)

entrySet的演示图解

img

HashMap : 内部结构是哈希表,不是同步的。允许null作为键,null作为值。
  TreeMap : 内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。

五、HashMap

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

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

相关文章

用离线编辑器Zoundry写zblog日志

Zoundry是免费的离线网志发布工具&#xff0c;由于家里的网络很差&#xff0c;写了一半的日志经常因为掉线而丢失&#xff0c;这样一款软件的确是很必要的。今天下载试用了一下&#xff0c;感觉的确不错。使用起来也很简单&#xff1a; 1.下载并安装zoundry软件&#xff1a;现…

MySQL:基本命令

一、数据库操作 1、查询数据库&#xff0c;命令如下: SHOW DATABASES;2、我们可以在登陆 MySQL 服务后&#xff0c;使用 create 命令创建数据库&#xff0c;命令格式: CREATE DATABASE 数据库名;3、使用 drop 命令删除数据库&#xff0c;命令格式&#xff1a; drop databas…

CentOS 5打造全功能Web服务器

转&#xff1a;主要做为历史记录&#xff0c;以后用。另外很少见这么好的编译的文章&#xff0c;其实我不推荐用编译安装。但这个文章不错.V3.0 2007年11月11日 将搭建教程划分阶段以适应不同需要。加入程序优化&#xff0c;程序安全&#xff0c;加入memcache&#xff0c;squid…

MySQL:查询条件

查询条件 1、使用 WHERE 子句从数据表中读取数据的通用语法&#xff1a; SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....查询语句中你可以使用一个或者多个表&#xff0c;表之间使用逗号**,** 分割&#x…

linux下的ImageMagick安装

检查系统有无安装ImageMagick官方网址是&#xff1a; www.imagemagick.org 从官方不好下载&#xff0c;提供 sourceforge的下载地址&#xff1a; imagemagick.sourceforge.net shell> rpm -qa | grep ImageMagick 没有就开始安装ImageMagickshell> rpm -Uvh ImageMagi…

MySQL:进阶应用

一、进阶应用 1、可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。 JOIN 按照功能大致分为如下三类&#xff1a; INNER JOIN&#xff08;内连接,或等值连接&#xff09;&#xff1a;获取两个表中字段匹配关系的记录。**LEFT JOIN&#xff08;左连…

Hive-常用操作

一. 数据库操作 1、创建数据库 //用户可以用 IF NOT EXISTS 选项来忽略这个异常。create database [ if not exists ] myhive ;2、创建数据库并指定hdfs存储位置 create database myhive2 location /myhive2;3、修改数据库&#xff0c;可以使用alter database 命令来修改数据…

linux下nmap工具的使用

nmap NMap&#xff0c;也就是Network Mapper&#xff0c;是Linux下的网络扫描和嗅探工 具包&#xff0c;其基本功能有三个&#xff0c;一是探测一组主机是否在线&#xff1b;其次是扫描主机端口&#xff0c;嗅探所提供的网络服务&#xff1b;还可以推断主机所用的操作系统 。N…

Hive-分区分桶概述

一、分区 简介 为了对表进行合理的管理以及提高查询效率&#xff0c;Hive可以将表组织成“分区”。 分区是表的部分列的集合&#xff0c;可以为频繁使用的数据建立分区&#xff0c;这样查找分区中的数据时就不需要扫描全表&#xff0c;这对于提高查找效率很有帮助。 分区是…

定时提醒你休息的脚本

本文来源于阿里西西WEB开发社区http://www.alixixi.com收集整理&#xff0c;欢迎访问。 定时弹窗提醒功能脚本..把以下代码存为.vbs运行即可. 以下是引用片段&#xff1a;set WshShell WScript.CreateObject("WScript.Shell") ’对话框标题 alerttitle "你的…

Hive-分区分桶操作

在大数据中&#xff0c;最常用的一种思想就是分治&#xff0c;我们可以把大的文件切割划分成一个个的小的文件&#xff0c;这样每次操作一个小的文件就会很容易了&#xff0c;同样的道理&#xff0c;在hive当中也是支持这种思想的&#xff0c;就是我们可以把大的数据&#xff0…

ubuntu好文收集

ubuntu全程配置手册 http://ljlau.blogdriver.com/ljlau/1220277.html ubuntu下向系统日志写记录 http://linux0818.bokee.com/viewdiary.14153197.html aptitude 使用快速参考 http://linuxtoy.org/archives/aptitude_quick_reference.html

Flume简单介绍

在一个完整的离线大数据处理系统中&#xff0c;除了HDFSMapReduceHive组成分析系统的核心之外&#xff0c;还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统&#xff0c;而这些辅助工具在hadoop生态体系中都有便捷的开源框架&#xff0c;在此&#xff0c;我们首先来…

linux系统优化篇之---top

top命令是Linux下常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用状况&#xff0c;类似于Windows的任务管理器。下面详细介绍它的使用方法。 top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48Tasks: 29 total, 1 running, 28 sleeping, …

Flume安装部署

1.安装部署 1、解压tar -zxvf apache-flume-1.9.0-bin.tar.gz 2、改名mv apache-flume-1.9.0-bin flume-1.9.0 3、配置环境变量 vi /etc/profile,source /etc/profile #flume export FLUME_HOME/usr/local/apps/flume-1.9.0 export PATH$PATH:$FLUME_HOME/bin4、将conf下的…

ubuntu学习摘要-ubuntu root用户

在我安装好后root的密码是什么&#xff1f;我怎样使用root帐号&#xff1f; 当你第一次安装好Ubuntu后&#xff0c;root帐号不能用。在安装期间创建的第一个用户对系统有管理权&#xff0c;通过“sudo”能象root运行程序.使用时仅需它的普通用户密码。例如: sudo apt-get updat…

Elasticsearch 简介入门

Elasticsearch 是一个分布式的开源搜索和分析引擎&#xff0c;适用于所有类型的数据&#xff0c;包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成&#xff0c;由 Elasticsearch N.V.&#xff08;即现在的 Elastic&#xff0…

Elasticsearch 7.x 安装及配置

一、下载安装 1、下载地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch 2、解压安装&#xff1a;tar -zxcf elasticsearch-7.9.0-linux-x86_64.tar.gz 二、新建es用户 在某个版本以后&#xff0c;elasticsearch为了安全性&#xff0c;是不能用root用户启…

Ubuntu下面apache2安装

Ubuntu为我们提供了 su apt-get install 命令&#xff0c;通过它你可以很方便地安装一些软件&#xff0c;这些软件是放在Ubuntu放置在各个地方的服务器上面&#xff0c;如果你想安装的软件是比较常见的&#xff0c;一般都可以通过它来下载.当然 Apache 这个软件服务器上面是有…

Java并发篇_乐观锁与悲观锁

乐观锁对应于生活中乐观的人总是想着事情往好的方向发展&#xff0c;悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。 一、引入概念 1、悲观锁 总是假设最坏的情况&#xff0c;每次去拿数据的时候都认为别人会修改&#xff0c;所以每次在拿数据的时候都会上锁&#…