Map接口
Map存储数据的特点:
Map接口中存储一组键值对象,提供key到Value的映射
通过键找到值,一一对应,就像通过身份证号找到人一样
key是唯一的,Value是可以重复的
什么时候使用Map:
Map接口专门存储键值 关系映射数据的存储
当存储这些数据的时候,我们可以使用Map最常用的实现类:HashMap
使用HashMap集合
需求:
添加一组娱乐圈曾为夫妻关系的明星姓名,男的用键,女的用值
如图:
分析:
1、如何创建 new 实现类
2、如何添加 put(key,value)
3、如何获取存储了几组信息 size()
4、如何获取集合中的数据 通过键获取值 get( key)
Map的常用方法
遍历Map
方法一:
遍历key,通过key —>value
方法1. 通过迭代器Iterator实现遍历
方法2. 增强for循环
//思路1 增强for遍历key
Set keys = map.keySet();
//遍历keys
for (Object obj : keys) {
String key=(String)obj;//获取到了map中的每一个key
String value = (String)map.get(key);//拿到每一个value
System.out.println(key+"—"+value);
}
方法二:
遍历key-value对
//思路2 迭代器遍历
Iterator iterator = keys.iterator();
while (iterator.hasNext()){
String key2 = (String) iterator.next();//获取到了所有的key键
String value2 = (String) map.get(key2);//获取到了所有的值
System.out.println(key2+"—"+value2);
}
方法三:
//思路3 获取所有的键值对,再通过键值对拿里面的key和value
//1、获取map 中的每一对键值对
Set entrySet = map.entrySet();
//2、遍历每一个键值对
for (Object o : entrySet) {
Map.Entry entry = (Map.Entry) o;//把获取到的键值对转为Map.entry类型
String key = (String) entry.getKey();
String value = (String) entry.getValue();
System.out.println(key+"—"+value);
}
Map使用练习
//创建学生类对象 包含属性 性别 姓名
public class Student {
private String name;
private String sex;
//有参构造方法传参
public Student(){
}
public Student(String name,String sex){
this.name=name;
this.sex=sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
//创建学生对应的集合 需要给英文名 键英文名 值 对象
public class StuMag {
public static void main(String[] args) {
//创建学生类对象
Student stu1 = new Student("李白","男");
Student stu2 = new Student("杜甫","男");
Student stu3 = new Student("白居易","男");
Student stu4 = new Student("李清照","女");
//创建map集合,
Map<String,Student> map = new HashMap();
//把学生对象放进map集合 键 英文名 值 学生对象
map.put("Sun",stu1);
map.put("Jim",stu2);
map.put("Jack",stu3);
map.put("San",stu4);
//通过英文名称,获取该学员对象的详细信息
Student jkStu = map.get("Jack");
String name = jkStu.getName();
String sex = jkStu.getSex();
System.out.println("Jack-"+"-"+name+"-"+sex);
System.out.println("=========遍历map集合============");
//遍历整个集合
Set keySet = map.keySet();
Iterator<String> iterator = keySet.iterator();
while (iterator.hasNext()){
String key = (String) iterator.next();
Student student = map.get(key);
String name1 = student.getName();
String sex1 = student.getSex();
System.out.println(key+"="+name1+"--"+sex1);
}
}
}
结果: