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的功能 自 ...
随机推荐
- spring ioc和aop的理解
IOC,依赖倒置的意思,所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B.所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B,如 ...
- ThreadLocal 定义,以及是否可能引起的内存泄露(threadlocalMap的Key是弱引用,用线程池有可能泄露)
ThreadLocal 也可以跟踪一个请求,从接收请求,处理请求,到返回请求,只要线程不销毁,就可以在线程的任何地方,调用这个参数,这是百度二面的题目,参考: Threadlocal 传递参数(百度二 ...
- Hibernate 之主键生成策略小总结
主键生成策略大致分两种: 手工控制策略 自动生成策略[框架自动生成和数据库自动生成] 手工控制策略: assigned:类型是任意的,需要在 save() 到数据库前,编码人员手工设置主键值,也就是调 ...
- MacOS & dock 工具栏 & 外接显示器 & 主屏
MacOS & dock 工具栏 & 外接显示器 & 主屏 macos 如何将 dock工具栏从外接显示器拖回主屏 https://support.apple.com/zh-c ...
- 当给属性添加final 时候 则无法进行第二次值的修改
- (2)YARN的工作流程
Writing YARN Applications 文档中的启动过程: Application submission client向Yarn ResourceManager提交一个Applicatio ...
- STL Set和multiset 容器
STL Set和multiset 容器 set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列. 元素插入过程是按排序规则插入,所以不能指定插入位 ...
- 洛谷 P1356 数列的整数性 解题报告
P1356 数列的整数性 题目描述 对于任意一个整数数列,我们可以在每两个整数中间任意放一个符号'+'或'-',这样就可以构成一个表达式,也就可以计算出表达式的值.比如,现在有一个整数数列:17,5, ...
- APT攻击基础科普
0x00 APT的历史起源背景 APT这个词汇最早起源于:2005年英国和美国的CERT组织发布了关于有针对性的社交工程电子邮件,放弃特洛伊木马以泄露敏感信息的第一个警告,尽管没有使用“APT”这个名 ...
- 遇到问题----linux-----linux 打开文件数 too many open files 解决方法
在运行某些命令或者 tomcat等服务器持续运行 一段时间后可能遇到 too many open files. 出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值. 查看每个用 ...