257 Map集合概述和特点
interface Map<K,V> extends util
K,Map里键(key)的类型
V,Map里值(value)的类型
键值对
将键映射到值的对象,不能包含重复的键,每个键可以映射到最多1个值
·
例如,学号和姓名
- student001 李磊
- student002 韩梅梅
- student003 刘娟
创建Map集合的对象,1.使用多态的方式,2.具体的实现类是HashMap
Map里键是唯一的,两键相同时,后期出现的键会替换前期出现的键
--------------------------------------------------------------
package e257;
import java.util.HashMap;
import java.util.Map;
public class MapDemo01 {
public static void main(String[] args) {
Map<String,String> m = new HashMap<String,String>();
// Map里面没有add方法,Map集合添加元素用put方法
m.put("2021001","TRACY");
m.put("2021002","RAT");
m.put("2021003","BADGER");
m.put("2021003","TOAD");
System.out.println(m);
//添加TOAD前,{2021003=BADGER, 2021002=RAT, 2021001=TRACY}
//添加TOAD后,{2021003=TOAD, 2021002=RAT, 2021001=TRACY},学号003处,TOAD替换了BADGER
//---Map里键是唯一的,两键相同时,后期出现的键会替换前期出现的键
}
}
258 Map集合的基本功能
【Map集合的基本功能】
方法名 |
说明 |
|
1 |
V put(K key,V value) |
|
2 |
V remove(Object key) |
根据键删除键值对 |
3 |
void clear() |
|
4 |
boolean containsKey(Object key) |
|
5 |
boolean containsValue(Object key) |
|
6 |
boolean isEmpty() |
|
7 |
int size() |
package e258;
import java.util.HashMap;
import java.util.Map;
public class MapDemo {
public static void main(String[] args) {
Map<String,String> m = new HashMap<String,String>();
m.put("ROBBIE","CECILIA");
m.put("ICHIGO","RUKIA");
m.put("GIN","RANGIKU");
System.out.println("\t原始数据");
System.out.println(m);//{ICHIGO=RUKIA, ROBBIE=CECILIA, GIN=RANGIKU}
System.out.println("\tmap的size");
System.out.println(m.size());
System.out.println("\t是否包含键ROBBIE?");
System.out.println(m.containsKey("ROBBIE"));
System.out.println("\t是否包含值CECILIA?\n");
System.out.println(m.containsValue("CECILIA"));
System.out.println("\t删除ROBBIE,ROBBIE是键");
System.out.println(m.remove("ROBBIE"));//CECILIA
System.out.println(m);//{ICHIGO=RUKIA, GIN=RANGIKU}
System.out.println("\t删除RUKIA,RUKIA是值");
System.out.println(m.remove("RUKIA"));//null
System.out.println(m);//{ICHIGO=RUKIA, GIN=RANGIKU},无效操作,什么也没删除,只能用键删除,不能用值删除
System.out.println("\t集合是否为空?");
System.out.println(m.isEmpty());
System.out.println("\t清除集合所有元素");
m.clear();
System.out.println(m);
System.out.println("\t现在集合应该是空的了?");
System.out.println(m.isEmpty());
}
}
259 Map集合的获取功能
【Map集合的获取功能】
方法名 |
说明 |
||
1 |
V get(Object key) |
get() |
根据键获取值,返回V |
2 |
Set<K>keySet() |
keySet() |
获取所有键的集合,返回Set |
3 |
Collection<V> values() |
values() |
获取所有值的集合,返回Collection |
4 |
Set<Map.Entry<K,V>>entrySet() |
entrySet() |
获取所有键值对对象的集合,返回 |
1 package e259;
2
3 import java.util.Collection;
4 import java.util.HashMap;
5 import java.util.Map;
6 import java.util.Set;
7
8 public class MapDemo {
9 public static void main(String[] args) {
10 Map<String,String> m = new HashMap<String,String>();
11 m.put("ROBBIE","CECILIA");
12 m.put("ICHIGO","RUKIA");
13 m.put("GIN","RANGIKU");
14 System.out.println("\t14.原始数据");
15 System.out.println(m);
16
17 System.out.println("\t17.根据键ROBBIE获取值CECILIA");
18 System.out.println(m.get("ROBBIE"));;
19
20 System.out.println("\t20.不存在的键,返回什么?");
21 System.out.println(m.get("AVA"));
22
23 System.out.println("\t23.获取所有键的集合");
24 System.out.println(m.keySet());
25
26 System.out.println("\t26.遍历输出所有的键");
27 Set<String> keySet = m.keySet();
28 for (String keyy:keySet){
29 System.out.println(keyy);
30 }
31
32 System.out.println("\t32.获取所有值的集合");
33 System.out.println(m.values());
34
35 System.out.println("\t35.遍历输出所有的值");
36 Collection<String> vvv = m.values();
37 for (String vv : vvv){
38 System.out.println(vv);
39 }
40
41 System.out.println("\t41.获取所有键值对对象的集合");
42 System.out.println(m.entrySet());
43
44 System.out.println("\t44.遍历输出所有的键值对(这是260课的内容)");
45 Set<String> j = m.keySet();
46 for (String jian : keySet){
47 String zhi = m.get(jian);
48 System.out.println(jian+","+zhi);
49 }
50
51 System.out.println("\t51.遍历输出所有的键值对(这是261课的内容)");
52 Set<Map.Entry<String,String>> eses = m.entrySet();
53 System.out.println("\t\t53.先输出下键值对集合");
54 System.out.println(eses);
55 System.out.println("\t\t55.最后,遍历输出所有的键值对");
56 for (Map.Entry<String,String> meme : eses){
57 String jian = meme.getKey();
58 String zhi = meme.getValue();
59 System.out.println(jian+","+zhi);
60 }
61 }
62 }
--------------------------------------------------------------
14.原始数据
{ICHIGO=RUKIA, ROBBIE=CECILIA, GIN=RANGIKU}
17.根据键ROBBIE获取值CECILIA
CECILIA
20.不存在的键,返回什么?
null
23.获取所有键的集合
[ICHIGO, ROBBIE, GIN]
26.遍历输出所有的键
ICHIGO
ROBBIE
GIN
32.获取所有值的集合
[RUKIA, CECILIA, RANGIKU]
35.遍历输出所有的值
RUKIA
CECILIA
RANGIKU
41.获取所有键值对对象的集合
[ICHIGO=RUKIA, ROBBIE=CECILIA, GIN=RANGIKU]
44.遍历输出所有的键值对(这是260课的内容)
ICHIGO,RUKIA
ROBBIE,CECILIA
GIN,RANGIKU
51.遍历输出所有的键值对(这是261课的内容)
53.先输出下键值对集合
[ICHIGO=RUKIA, ROBBIE=CECILIA, GIN=RANGIKU]
55.最后,遍历输出所有的键值对
ICHIGO,RUKIA
ROBBIE,CECILIA
GIN,RANGIKU
260 Map集合的遍历(方式1)
【方式1】
- 把所有的键集中起来
- 遍历键的集合,获取到每一个键
- 根据键找到对应的值
【思路】
- keySet()获取所有键的集合
- 用增强for遍历键的集合,
- get(Object kay)根据键找到对应的值
--------------------------------------------------------------
这节课的代码汇总到了259的代码里面,行号44
261 Map集合的遍历(方式2)
【方式2】
获取键值对集合
遍历键值对集合,获取每一个键值对
根据键值对获取键和值
【思路】
(查看帮助文档可知)
getKey()获取键值对当中的键
getValue()获取键值对当中的值
--------------------------------------------------------------
详见259的代码,行号51