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的功能 自 ...
随机推荐
- [转帖]awk 入门
awk其实不仅仅是工具软件,还是一种编程语言.不过,本文只介绍它的命令行用法,对于大多数场合,应该足够用了. http://www.ruanyifeng.com/blog/2018/11/awk.ht ...
- 无法安装HAXM (VT-X is not turned on)
安装HAXM的时候,VT-X is not turned on. 进入bios查看,已经启动了vt-x.上网搜索发现解决有一部分电脑是因为安装了Hyper-V,解决的方法: 管理员运行cmd,输入如下 ...
- css中定位功能的特性
它有四大特性,页面找不到盒子的情况 1.z-index值表示谁压着谁,数值大的压盖数值小的 2.只有定位了的元素,才有z-index.也就是说,不管相对定位,绝对定位,固定定位,都可以使用z-inde ...
- Mysql innodb 间隙锁 (转)
MySQL InnoDB支持三种行锁定方式: 行锁(Record Lock):锁直接加在索引记录上面. 间隙锁(Gap Lock):锁加在不存在的空闲空间,可以是两个索引记录之间,也可能是第一个索引记 ...
- SPOJ Triple Sums(FFT+容斥原理)
# include <cstdio> # include <cstring> # include <cstdlib> # include <iostream& ...
- Joseph's Problem UVALive - 3521(等差数列的应用)
题意:给定n, k,求出∑ni=1(k mod i) 思路:由于n和k都很大,直接暴力是行不通的,然后在纸上画了一些情况,就发现其实对于k/i相同的那些项是形成等差数列的,于是就可以把整个序列进行拆分 ...
- 整理:python的二维数组操作
Python中初始化一个5 x 3每项为0的数组,最好方法是: multilist = [[0 for col in range(5)] for row in range(3)] 如果初始化一个二维数 ...
- 安装Xtrabackup,设置定时备份msyql数据库
Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. XtraDB 存储引擎是由Perco ...
- UESTC--1468
题目:A Coin Problem 原题链接:http://acm.uestc.edu.cn/problem.php?pid=1468 分析:满足裴波纳契数列,打表找周期. #include<i ...
- 个人在 laravel 开发中使用到的一些技巧(持续更新)
1.更高效率地查询:使用批量查询代替 foreach 查询(多次 io 操作转换为一次 io操作) 如果想要查看更详尽的介绍,可以看看这篇文章 什么是 N+1 问题,以及如何解决 Laravel 的 ...