1-28Map简介
Map接口概述
除了Collection之外,常用的集合还有Map接口,里面常用的实现类图如下:

map中的元素是以键-值的方式存在的,通过键可以获取到值,键是不可以重复的,跟地图比较像,通过一个坐标就可以找到具体的位置。
package com.monkey1024.map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
/**
* Map简介
*
*/
public class MapTest01 {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
String s1 = map.put(1001, "成龙");
map.put(1002, "周润发");
map.put(1003, "周星驰");
//将1001 成龙替换掉,并且返回被替换的成龙
String s2 = map.put(1001, "房祖名");
System.out.println(s1);
System.out.println(s2);
//判断是否包含传入的键
System.out.println(map.containsKey(1002));
//判断是否包含传入的值
System.out.println(map.containsValue("周星驰"));
//获取map的大小
System.out.println(map.size());
//将map中的值返回
Collection<String> c = map.values();
System.out.println(c);
System.out.println(map);
//删除键是1001的数据并且将值返回
String s3 = map.remove(1001);
System.out.println(s3);
}
}
Map的遍历
方式一:Map中的keySet()返回的是一个包含所有键的Set类型的对象,通过键获取值
package com.monkey1024.map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* Map的遍历
*
*/
public class MapTest02 {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(1001, "成龙");
map.put(1002, "周润发");
map.put(1003, "周星驰");
map.put(1004, "刘德华");
// 通过键获取值
String s = map.get(1004);
System.out.println(s);
// 获取map中所有的键返回给Set
Set<Integer> keySet = map.keySet();
//遍历set获取键,根据键获取值
Iterator<Integer> iter = keySet.iterator();
while(iter.hasNext()){
Integer key = (Integer)iter.next();
System.out.println("键:" + key + ",值:" + map.get(key));
}
//使用增强for循环遍历
for(Integer key : map.keySet()) {
System.out.println("键:" + key + ",值:" + map.get(key));
}
}
}
方式二:Map中的键和值被封装成了Entry对象,并存储在Set集合中,通过entrySet()可以获取到这个Set集合。
package com.monkey1024.map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
* Map的遍历
*
*/
public class MapTest03 {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(1001, "成龙");
map.put(1002, "周润发");
map.put(1003, "周星驰");
map.put(1004, "刘德华");
//键和值被封装成了Entry对象,并存储在Set集合中
Set<Map.Entry<Integer,String>> entrySet = map.entrySet();
Iterator<Map.Entry<Integer,String>> it = entrySet.iterator();
while(it.hasNext()) {
//获取每一个Entry对象
Entry<Integer,String> en = it.next();
//根据键值对对象获取键
Integer key = en.getKey();
//根据键值对对象获取值
String value = en.getValue();
System.out.println("键:" + key + ",值:" + value);
}
//增强for循环
for (Entry<Integer, String> en : map.entrySet()) {
System.out.println("键:" + en.getKey() + ",值:" + en.getValue());
}
}
}
LinkedHashMap
LinkedHashMap的特点:存取顺序一致
package com.monkey1024.map;
import java.util.LinkedHashMap;
/**
* LinkedHashMap简介
*
*/
public class MapTest04 {
public static void main(String[] args) {
LinkedHashMap<Integer,String> lhm = new LinkedHashMap<>();
lhm.put(1003, "周星驰");
lhm.put(1004, "刘德华");
lhm.put(1001, "成龙");
lhm.put(1002, "周润发");
System.out.println(lhm);
}
}
TreeMap
TreeMap的特点:可以对存储的元素进行排序
package com.monkey1024.map;
import java.util.TreeMap;
/**
* TreeMap简介
*
*/
public class MapTest05 {
public static void main(String[] args) {
TreeMap<Integer,String> tm = new TreeMap<>();
tm.put(1003, "周星驰");
tm.put(1004, "刘德华");
tm.put(1001, "成龙");
tm.put(1002, "周润发");
System.out.println(tm);
}
}
HashMap和Hashtable的区别
Hashtable是JDK1.0版本出现的,是线程安全的,效率低,不可以存储null键和null值
HashMap是JDK1.2版本出现的,可以存储null键和null值
1-28Map简介的更多相关文章
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- Cesium简介以及离线部署运行
Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...
- 1.Hibernate简介
1.框架简介: 定义:基于java语言开发的一套ORM框架: 优点:a.方便开发; b.大大减少代码量; c.性能稍高(不能与数据库高手相比,较一般数据库使用者 ...
随机推荐
- Grunt 自动编译 Less 文件配置
1.安装Grunt http://www.gruntjs.net/getting-started 2.编辑 package.json 文件 { "name": "Grun ...
- 【转载】malloc和new
1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符.它们都可用于申请动态内存和释放内存2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对 ...
- 数据库之Oracle
数据库之Oracle 一. 用户的管理 1. 用户就是好比公司的某个人,而权限是这个人能在公司做什么,他的角色就是说明他的职位. 2. 用户的权限分为: 系统权限:对别的用户的管理操作. 对象权限:对 ...
- 使用Oracle数据库实现树形结构表的子-父级迭代(递归)查询和删除,通过级联菜单简单举例
前言: 我们在开发中,常常遇到单表的子-父id级联的表结构,在树形的深度不确定的情况下,一次查询出某个树形结构下的所有具有子-父级关系的数据变得十分困难. 这时,我们使用oracle提供的CONNEC ...
- POJ3261(后缀数组+2分枚举)
Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 12972 Accepted: 5769 Ca ...
- hihoCoser(#1149 : 回文字符序列)
时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定字符串,求它的回文子序列个数.回文子序列反转字符顺序后仍然与原序列相同.例如字符串aba中,回文子序列为"a& ...
- visualstudio2017 +EF+Mysql生成实体数据模型闪退
VisualStudio2017+EF+MySql正常运转,费了不少劲,踏过不少坑 1.安装 Connector/NET 8.0.13 地址:https://dev.mysql.com/downloa ...
- 量子隐形传态1 Quantum Teleportation
量子隐形传态是量子纠缠的又一个应用. 隐形传态,所谓隐形的意思就是没有物质介质就传递了信息,在经典世界,传递信息要有介质,光.电磁波或者其他的什么,但是在量子的世界里,我可以把信息传递给你,并且不传递 ...
- 关于git被误删除的分支还原问题
在开发过程中, 有可能会将正在开发的本地分支误删, 本地分支被删除时, 如果已经将本地分支的变更推送到了远端, 还没有问题, 如果被删除的本地分支只提交了没有推送到远端, 就悲剧了, 相当于在你上一次 ...
- How Many Boyfriends
知乎上看到一个问题,如果一个女人说自己集齐了12个星座的男朋友,那么她已经搞过多少男人了. 先考虑这个问题的最简单版本,如果说该女人每一次和12个星座的男人交往的概率相同. 考虑$dp$ 注意到这个问 ...