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

map中的元素是以键-值的方式存在的,通过键可以获取到值,键是不可以重复的,跟地图比较像,通过一个坐标就可以找到具体的位置。
package com.sutaoyu.Map; import java.util.Collection;
import java.util.HashMap;
import java.util.Map; public class Map_test_1 {
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.sutaoyu.Map; import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set; public class Map_test_2 {
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值
33、Map简介的更多相关文章
- STL map 简介
STL map 简介 转载于:http://www.cnblogs.com/TianFang/archive/2006/12/30/607859.html 1.目录 map简介 map的功能 使用ma ...
- Java Map 简介
AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, H ...
- Java map简介
了解最常用的集合类型之一 Map 的基础知识以及如何针对您应用程序特有的数据优化 Map. 本文相关下载: · Jack 的 HashMap 测试· Oracle JDeveloper 10g jav ...
- Power BI for Office 365(六)Power Map简介
如果说Power BI中最给力的功能是什么,我觉得是Power Map.Power Map第一次是出现在SQL Server 2014的新特性里被提及,前身就是GeoFlow.在Power Map下可 ...
- Java集合---List、Set、Iterator、Map简介
1.List集合 1.1概念 List继承自Collection接口.List是一种有序集合,List中的元素可以根据索引(顺序号:元素在集合中处于的位置信息)进行取得/删除/插入操作. 跟Set集合 ...
- C++ map的基本操作和用法
1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 2.map的功能 自 ...
- [转]Java中Map的用法详解
转载地址:http://www.zhixing123.cn/jsp/30113.html Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictio ...
- JAVA基础学习day16--集合三-Map、HashMap,TreeMap与常用API
一.Map简述 1.1.简述 public interface Map<K,V> 类型参数: K - 此映射所维护的键的类型 key V - 映射值的类型 value 该集合提供键--值的 ...
- 【转】 C++ map的基本操作和使用
1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 2.map的功能 自 ...
随机推荐
- mysql实现消息队列
mysql之消息队列 消息队列:在消息的传输过程中保存消息的容器. 消息队列管理器在将消息从它的源中继到它的目标时充当中间人.队列的主要目的是提供路由并保证消息的传递:如果发送消息时接收者不可用, ...
- Android自动化之旅—生成渠道包
美团Android自动化之旅—生成渠道包:http://tech.meituan.com/mt-apk-packaging.html Android Studio系列教程六--Gradle多渠道打 ...
- html实现鼠标悬停变成手型实现方式
1.采用a标签实现的方式 <a href="javascript:void()">内容</a> 2.采用CSS实现的方式 // 变手形 oElement.s ...
- spring注解方式注入
1.通过Resource注入 1.在属性上注入 1.默认注入 即不指定spring容器里面的名字 匹配规则:先通过属性的名字查找 再通过属性类型与实现类类型匹配查找 当有两个实现类会报错 2.通过指定 ...
- Qt——用于表格QTableView的模型
如果想使用表格来呈现数据,Qt提供了一个方便的部件QTableWidget,但是直接用它实现一些功能可能比较困难.这里将介绍一种强大.灵活的方式来操作表格. 一.模型/视图架构 在这个架构中,模型用于 ...
- Finding LCM LightOJ - 1215 (水题)
这题和这题一样......只不过多了个数... Finding LCM LightOJ - 1215 https://www.cnblogs.com/WTSRUVF/p/9316412.html #i ...
- 内容显示在HTML页面底端的一些处理方式
1.概要: 手机页面底端有时候需要显示版权信息,诸如一行文字或者一个背景图片,但是页面的滚动长度未知,需要考虑两个问题 当页面高度小于屏幕高度时候: 希望最后一行信息显示在屏幕底端,同时也就是页面底端 ...
- 注册系统所有的dll文件.bat
@echo off echo 运行后,能重新注册系统所有的dll文件, echo 能解决内存读写错误的问题 pause echo on for %%1 in (%windir%/system32/*. ...
- HBase介绍及简易安装
HBase简介 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问,是Google的BigTable的开源实现.HBase的目标是存储并处理大型的数据,更具体地说仅 ...
- BZOJ 50题纪念?
是的,这次的纪念帖也比较磕碜-- 但是还有更磕碜的↓↓↓ 2017年6月7日,我在我的旧博客发了个bzoj10题纪念-- 那时我还是一个又young又simple的菜鸡(现在可能也是--),省选之后觉 ...