1.用hashMpa实现Map接口
方法摘要 | |
|
从此映射中移除所有映射关系(可选操作)。 |
|
如果此映射包含指定键的映射关系,则返回 true。 |
|
如果此映射将一个或多个键映射到指定值,则返回 true。 |
|
返回此映射中包含的映射关系的 Set 视图。 |
|
比较指定的对象与此映射是否相等。 |
|
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 |
|
返回此映射的哈希码值。 |
|
如果此映射未包含键-值映射关系,则返回 true。 |
|
返回此映射中包含的键的 Set 视图。 |
|
将指定的值与此映射中的指定键关联(可选操作)。 |
|
从指定映射中将所有映射关系复制到此映射中(可选操作)。 |
|
如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 |
|
返回此映射中的键-值映射关系数。 |
|
返回此映射中包含的值的 Collection 视图。 |
MapTest:
package ListDemo;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class MapTest {
private Map<String,Student> students;
public MapTest(){
students = new HashMap<String,Student>();
}
public void putStu(){
Scanner sc = new Scanner(System.in);
int i=0;
while(i<3){
System.out.println("请输入学生ID:");
String ID = sc.next();
if(students.get(ID)==null){
//提示输入学生姓名
System.out.println("请输入学生姓名:");
String name = sc.next();
students.put(ID, new Student(ID,name));
System.out.println("成功添加学生:"+students.get(ID).getStuName());
i++;
continue;
}
System.out.println("该学生已存在!!为:"+students.get(ID).getStuName());
}
}
//打印输出students内学生信息
public void testKeySet(){
Set<String> keySet = students.keySet();
for(String ID:keySet){
if(students.get(ID)!=null)
System.out.println("学号:"+ID+" 姓名:"+students.get(ID).getStuName());
}
}
//删除学生
public void testRemove(){
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("输入要删除的学生ID:");
String ID = sc.next();
Student stu = students.get(ID);
if(stu==null){
System.out.println("该学生ID不存在!");
continue;
}
students.remove(ID);
System.out.println("成功删除学生:"+stu.getStuName());
break;
}
}
//EntrySet方法遍历students
public void testEntrySet(){
//通过EntrySet方法返回students中所有键值对
Set<Entry<String,Student>> entrySet = students.entrySet();
//遍历输出
for(Entry<String,Student> entry:entrySet){
//获取ID
String ID = entry.getKey();
//获取student
Student stu = entry.getValue();
System.out.println("学号:"+ID+"姓名:"+stu.getStuName());
}
}
public void testModify(){
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("输入要修改的学生ID:");
String ID = sc.next();
Student stu = students.get(ID);
if(stu==null){
System.out.println("该学生ID不存在!!");
continue;
}
//输入要修改的信息
System.out.println("当前学生为:"+stu.getStuName()+"\n输入修改后的姓名:");
String name = sc.next();
Student newStudent = new Student(ID, name);
students.put(ID, newStudent);
System.out.println("修改成功!学号:"+ID+"姓名:"+newStudent.getStuName());
break;
}
}
public void testContainsKeyOrValue(){
//提示输入学生id
System.out.println("输入要查寻的学生id:");
Scanner sc = new Scanner(System.in);
String id = sc.next();
System.out.println("在学生映射表中是否存在id="+id+":"+students.containsKey(id));
if(students.containsKey(id))
System.out.println("该学生姓名为:"+students.get(id).getStuName());
//提示输入学生姓名
System.out.println("输入要查询的学生姓名:");
String name = sc.next();System.out.println();
Student stu = new Student(null,name);
System.out.println("映射表中是否存在学生"+name+":"+students.containsValue(stu));
//此处要重写student类的equals方法
}
public static void main(String[] args) {
MapTest mt = new MapTest();
//添加元素到map中
mt.putStu();
//keyset方法遍历map中元素
mt.testKeySet();
//从map中删除元素
mt.testRemove();
//EntrySet方法遍历map中元素
mt.testEntrySet();
//修改map中元素
mt.testModify();
mt.testKeySet();
//查询学生映射表中是否包含某一Key或value
mt.testContainsKeyOrValue();
}
}