Java集合—Map集合(习题)
1.使用泛型修改根据学员姓名找学员对象
2.运用Map的三种遍历方式进行遍历
迭代器遍历
键值对遍历
增强遍历
综合要求
需求说明
学员应聘至外企工作,每个学员都会有一个英文名称,对应该学员对象。
请实现通过英文名称,获得该学员对象的详细信息学员属性包括姓名以及性别通过泛型解决该问题
//标准JavaBean学生类
public class Student {
private String nameEnglish;
private String nameChinese;
private String sex;
public Student() {
}
public Student(String nameEnglish, String nameChinese, String sex) {
this.nameEnglish = nameEnglish;
this.nameChinese = nameChinese;
this.sex = sex;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getNameChinese() {
return nameChinese;
}
public void setNameChinese(String nameChinese) {
this.nameChinese = nameChinese;
}
public String getNameEnglish() {
return nameEnglish;
}
public void setNameEnglish(String nameEnglish) {
this.nameEnglish = nameEnglish;
}
@Override
public String toString() {
return "Student{" +
"nameEnglish='" + nameEnglish + '\'' +
", nameChinese='" + nameChinese + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
学生测试类
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
public class StudentTest {
public static void main(String[] args) {
/*
学员应聘至外企工作,每个学员都会有一个英文名称,对应该学员对象。
请实现通过英文名称,获得该学员对象的详细信息
学员属性包括姓名以及性别
*/
//创建集合的对象,因为Map属于接口,所以要创建它的实现类对象
Map<String,Student> map =new HashMap<>();
// // 创建学生对象 并 添加到集合中
Student stu1 = new Student("Jack","李明","男");
Student stu2 = new Student("Tom","李华","女");
map.put("Jack",stu1);
map.put("Tom",stu2);
// ★★★★ 1.键找值 ★★★★★★★★★
// 理解为:创建一个单列集合存放键
Set<String> keys = map.keySet();
// 1.1增强for循环 keys
for (String key : keys) {
// System.out.println(key);
// 获取每一个键对应的值,这里的值为学生对象
Student stuValue = map.get(key);
System.out.println(key+"对应的学员是"+stuValue.getNameChinese()+","+stuValue.getSex());
}
// 1.2.迭代器循环 keys
Iterator<String> it = keys.iterator();
while (it.hasNext()){
// 获取每一个键
String key = it.next();
// 获取每一个键对应的值,这里的值为学生对象
Student stuValue = map.get(key);
System.out.println(key+"对应的学员是"+stuValue.getNameChinese()+","+stuValue.getSex());
}
// 1.3.Lambda表达式遍历 keys
keys.forEach(new Consumer<String>() {
@Override
public void accept(String key) {
// 获取每一个键对应的值,这里的值为学生对象
Student stuValue = map.get(key);
System.out.println(key+"对应的学员是"+stuValue.getNameChinese()+","+stuValue.getSex());
}
});
// ★★★★ 2.键值对 ★★★★★★★
// 通过一个方法获取所有的键值对对象,返回一个Set集合
Set<Map.Entry<String, Student>> entries = map.entrySet();
// 2.1 增强for遍历 entries
for (Map.Entry<String, Student> entry : entries) {
// System.out.println(entry);
// 获取键值对的键
String key = entry.getKey();
// 获取键值对的值
Student valueStu = entry.getValue();
System.out.println(key+"对应的学员"+valueStu.getNameChinese()+","+valueStu.getSex());
}
// 2.2迭代器遍历 entries
Iterator<Map.Entry<String, Student>> it1 = entries.iterator();
while (it1.hasNext()){
Map.Entry<String, Student> next = it1.next();
// 获取键值对的键
String key = next.getKey();
// 获取键值对的值
Student valueStu = next.getValue();
System.out.println(key+"对应的学员"+valueStu.getNameChinese()+","+valueStu.getSex());
}
// 2.3Lambda表达式遍历 entries
entries.forEach(new Consumer<Map.Entry<String, Student>>() {
@Override
public void accept(Map.Entry<String, Student> stringStudentEntry) {
String key = stringStudentEntry.getKey();
Student valueStu = stringStudentEntry.getValue();
System.out.println(key+"对应的学员"+valueStu.getNameChinese()+","+valueStu.getSex());
}
});
// main ending.....
}
}