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. WebStorm 2016.2 破解方法
  2. Asp.Net MVC4入门指南(8):给数据模型添加校验器
  3. [Solution] 一步一步WCF(1) 快速入门
  4. 禅道,然之和蝉知入驻VM Depot
  5. mysql创建自定义函数与存储过程
  6. Linux的五个查找命令 [转]
  7. 进阶:案例三: Upload File using WebDynpro
  8. 有愿意共同发展USB固件做?
  9. 蓝桥杯-比酒量-java
  10. 修改 iOS AppIcon
  11. Python *args 和 **kwargs用法
  12. SQL自动流水号函数
  13. [转] 深入理解React 组件状态(State)
  14. python3之end关键字
  15. StanFord ML 笔记 第二部分
  16. Linq查询条件里有可空字段比较时报错variable '&lt;&gt;h__TransparentIdentifier2' of type referenced from scope '', but it is not defined
  17. .NET中CORS跨域访问WebApi
  18. ubuntu编译安装ruby1.9.3,从p551降级到p484
  19. C#反射——简单反射操作类的封装
  20. Spring Mvc:用MultiPartFile上传单个文件,多个文件

热门文章

  1. mac安装python3
  2. html页面表格导出到excel总结
  3. CF 622 F The Sum of the k-th Powers —— 拉格朗日插值
  4. POJ1904(有向图缩点+输入输出挂参考)
  5. 20.java的7种控制语句
  6. fragment error
  7. JavaScript实现Select选择本周、上周、本季、上季、本年的时间选取
  8. SQL编程题-----1
  9. NHibernate从入门到精通系列——NHibernate环境与结构体系
  10. java如何写接口给别人调用