集合Map的属性是,元素为键值对< key , value >,一对组成映射关系,且key具有唯一性。
/*
假设以下类都已经导入了需要的包,
假设已经定义了一个学生类Student具有id,name两个属性与各方法
*/
//Map的添加方法
public class MapClass {
//装学生类型对象
public Map<String,Student> student;
public MapClass() {
this.student = new HashMap<String,Student>();
}
//测试添加功能,输入学生ID,判断是否被占用,若无则输入姓名,创建新对象
public void putMap() {
//Scanner来接收用户输入
Scanner console = new Scanner(System.in);
int i=0;
while(i<3) {
System.out.println("please input student's ID:");
String ID = console.next();
//是否被占用
Student st = student.getId(ID);
if (st == null) {
//提示输入学生姓名
System.out.println("please input student's name:");
String name = console.next();
//创建新的学生对象
Student newStudent = new Student(ID,name);
//通过调用put()方法,添加ID-学生映射,ID具有唯一性
student.put(ID,newStudent);
i++
} else {
System.out.println("error");
continue;
}
}
}
}
//Map的KeySet方法
public class MapClass {
//装学生类型对象
public Map<String,Student> student;
public MapClass() {
this.student = new HashMap<String,Student>();
}
//keySet方法
public void keySetMap() {
//通过keySet方法,返回Map中所有的“键”的set集合
Set<String> keySet = student.keySet();
//取得student的容量
System.out.println(student.size() + "个学生");
//遍历keySet,取得每一个键,再调用get()方法取得value
for (String stuID : keySet) {
Student st = student.getId(ID);
if (st != null) {
System.out.println(st.name);
}
}
}
}
//删除Map中的映射
public class MapClass {
//装学生类型对象
public Map<String,Student> student;
public MapClass() {
this.student = new HashMap<String,Student>();
}
//删除方法
public void removeMap() {
//输入,获取学生ID
Scanner console = new Scanner(System.in);
while(true) {
//若id类型为int,也可以用nextInt()接收
String ID = console.next();
//判断ID是否有对应的学生对象
Student st = student.get(ID);
if(st == null) {
//提示输入的ID不存在
continue;
}
student.remove(ID);
System.out.println("成功删除学生");
break;
}
}
}
//通过entrySet方法遍历Map
public class MapClass {
//装学生类型对象
public Map<String,Student> student;
public MapClass() {
this.student = new HashMap<String,Student>();
}
//entrySet方法
public void entrySetMap() {
//通过entrySet方法,返回Map中键的值
Set<Map.Entry<String,Student> entrySet = student.entrySet();
for(Map.Entry<String,Student> entry : entrySet) {
System.out.println("取得键:"+entry.getKey());
System.out.println("对应的value为:"+entry.getValue().name);
}
//通过entrySet方法,返回Map中键的值
Iterator<Map.Entry<String, Student>> iter = student.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, Student> entry = iter.next();
System.out.println("取得键:"+entry.getKey());
System.out.println("对应的value为:"+entry.getValue().name);
}
}
}
//使用put方法,修改Map中已有的映射
public class MapClass {
//装学生类型对象
public Map<String,Student> student;
public MapClass() {
this.student = new HashMap<String,Student>();
}
//修改映射
public void modifyMap() {
//提示输入修改学生的ID
Scanner console1 = new Scanner(System.in);
while(true) {
//取得ID,若是int类型,可以使用nextInt()
String stuID = console1.next();
//是否存在ID
Student stu = student.get(stuID);
if(stu == null) {
System.out.println("error");
continue;
}
//提示当前对应学生对象的姓名
System.out.println("对应ID的学生名称:"+stu.name);
//提示输入新的学生姓名,来修改已有的映射
Scanner console2 = new Scanner(System.in);
String name = console2.next();
Student newStudent = new Student(stuID,name);
student.put(stuID,newStudent);
System.out.println("修改成功");
break;
}
}
}
//Map中是否包含某个Key值或者某个value的值
public class MapClass {
//装学生类型对象
public Map<String,Student> student;
public MapClass() {
this.student = new HashMap<String,Student>();
}
//方法
public void containsKeyOrValue() {
//提示用户输入学生ID
System.out.println("请输入学生ID:");
Scanner console1 = new Scanner(System.in);
String id = console1.next();
//Map中,用containsKey()方法,来判断是否包含Key值
System.out.println("是否存在此ID:" + student.containsKey(id));
if(student.containsKey(id)) {
System.out.println("对应的学生:"+student.get(id).name);
}
//提示输入学生姓名
System.out.println("请输入学生姓名:");
Scanner console2 = new Scanner(System.in);
String name = console2.next();
//用containsValue()方法,判断是否包含Value值
if(student.containsValue(new Student(null,name))) {
System.out.println("确实包含学生:"+name);
} else {
System.out.println("在学生映射表中不存在这个学生");
}
}
}