文章目录
- Java集合—Map集合(习题)
- 1.使用泛型修改根据学员姓名找学员对象
- 2.运用Map的三种遍历方式进行遍历
- 迭代器遍历
- 键值对遍历
- 增强遍历
- 综合要求
Java集合—Map集合(习题)
1.使用泛型修改根据学员姓名找学员对象
2.运用Map的三种遍历方式进行遍历
迭代器遍历
键值对遍历
增强遍历
综合要求
需求说明
学员应聘至外企工作,每个学员都会有一个英文名称,对应该学员对象。
请实现通过英文名称,获得该学员对象的详细信息学员属性包括姓名以及性别通过泛型解决该问题
java">//标准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;}@Overridepublic String toString() {return "Student{" +"nameEnglish='" + nameEnglish + '\'' +", nameChinese='" + nameChinese + '\'' +", sex='" + sex + '\'' +'}';}
}
学生测试类
java">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循环 keysfor (String key : keys) {// System.out.println(key);// 获取每一个键对应的值,这里的值为学生对象Student stuValue = map.get(key);System.out.println(key+"对应的学员是"+stuValue.getNameChinese()+","+stuValue.getSex());}// 1.2.迭代器循环 keysIterator<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表达式遍历 keyskeys.forEach(new Consumer<String>() {@Overridepublic 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遍历 entriesfor (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迭代器遍历 entriesIterator<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表达式遍历 entriesentries.forEach(new Consumer<Map.Entry<String, Student>>() {@Overridepublic 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.....}}