Map用于保存具有映射关系的数据。
Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据。value可以重复,但key不能重复。
所以通过指定的key就可以取出对应的value。
Interface Map< K,V >
K - the type of keys maintained by this map
V - the type of mapped values
Map中存放的是键值对。
在向Map对象中添加数据时,用到put(K,V)方法。
例如我们添加一条教师记录
名为 Tom ,教授课程为 CoreJava ,如下实现
Map teacher = new HashMap();
teacher.put("Tom","CoreJava");
在移除Map中的某条数据的时候,用到remove(K)方法。
例如我们想要删除名为 Tom的教师记录,如下实现
teacher.remove(Tom);
Map集合的两种取出方式:
一种是 先获取键,再通过键获取值 的方式
Set <K> keySet
一种是 直接获取键值对 的方式
Set<Map.Entry<K,V>> entrySet
先看一个Java面试题
已知某学校的教学课程内容安排如下:
完成下列要求:
1) 使用一个 Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排。
2) 增加了一位新老师 Allen 教 JDBC
3) 移除名为Lucy的老师的信息记录
4) 遍历 Map,输出所有的老师及老师教授的课程
keySet方式:
package map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class course {
public static void main(String[] args) {
//1) 使用一个 Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排。
Map<String, String> teacher = new HashMap<>();
teacher.put("Tom","CoreJava");
teacher.put("John","Oracle");
teacher.put("Susan","Oracle");
teacher.put("Jim","Unix");
teacher.put("Kevin","JSP");
teacher.put("Lucy","JSP");
//2) 增加了一位新老师 Allen 教 JDBC
teacher.put("Allen", "JDBC");
//3) 移除Lucy老师的记录
teacher.remove("Lucy");
//4) 遍历 Map,输出所有的老师及老师教授的课程
Set<String> set = teacher.keySet();//set用来存取每条记录中的 键 --老师的名字
Iterator<String> itrt = set.iterator();//创建遍历器对象,对set遍历
while(itrt.hasNext()){
String key = (String) itrt.next();//获取 键
String value = (String) teacher.get(key);//通过键 查找对应的 值
System.out.println(key+" "+value);
}
}
}
entrySet方式
在获取键时使用
entry.getKey();方法
在获取值是使用
entry.getValue();方法
package map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class course {
public static void main(String[] args) {
//1) 使用一个 Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排。
Map<String, String> teacher = new HashMap<>();
teacher.put("Tom","CoreJava");
teacher.put("John","Oracle");
teacher.put("Susan","Oracle");
teacher.put("Jim","Unix");
teacher.put("Kevin","JSP");
teacher.put("Lucy","JSP");
//2) 增加了一位新老师 Allen 教 JDBC
teacher.put("Allen", "JDBC");
//3) 移除Lucy老师的记录
teacher.remove("Lucy");
//4) 遍历 Map,输出所有的老师及老师教授的课程
Set<Map.Entry<String, String>> set = teacher.entrySet();//获取键值对
Iterator<Map.Entry<String, String>> itrt = set.iterator();//创建遍历器
while(itrt.hasNext()){
Map.Entry<String, String> entry = itrt.next();
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}