import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class MapTest {
//泛型为<String,Student>
public Map<String,Student> students;
private Scanner console;
public MapTest(){
this.students=new HashMap<String,Student>();
}
public void testPut(){
console = new Scanner(System.in);
int i=0;
while(i<3){
System.out.println("请输入学生ID:");
String ID=console.next();
//get方法得到的是key值
Student st=students.get(ID);
if(st==null){
System.out.println("请输入学生姓名:");
String name=console.next();
Student newStudent=new Student(ID,name);
//把学生ID作为key值
students.put(ID,newStudent );
System.out.println("成功添加");
i++;
}else{
System.out.println("学生ID已被占用,重新输入");
continue;
}
}
}
/*
* 使用keySet()遍历map集合
*/
public void testKeySet(){
//通过keySet方法,返回Map中的key值的Set集合(泛型为:String)
Set<String> KeySet=students.keySet();
//遍历keySet,取得每一个键,再调用get方法取得每一个键的value值
Iterator<String> it= KeySet.iterator();
while(it.hasNext()){
String key=it.next();
Student s=students.get(key);
System.out.println("学生的ID:"+s.id+"学生的姓名:"+s.name);
}
System.out.println("总共有学生:"+KeySet.size());
}
/*
* 使用EntrySet()遍历map集合
*/
public void testEntrySet(){
//entrySet()返回的是map中所有的键值对所以Entry也有泛型,和students一样的泛型
Set<Entry<String,Student>> entrySet=students.entrySet();
Iterator<Entry<String, Student>> it=entrySet.iterator();
while(it.hasNext()){
Entry<String,Student> entry= it.next();
String key=entry.getKey();
System.out.println("key值为:"+key);
Student value=entry.getValue();
System.out.println("学生ID:"+value.id+" 学生姓名:"+value.name);
}
}
/*
* 删除学生
*/
public void TestRemove(){
console=new Scanner(System.in);
while(true){
System.out.println("请输入要删除的学生ID:");
String ID= console.next();
Student st=students.get(ID);
if(st==null){
System.out.println("学生不存在");
}
else{
students.remove(ID);
System.out.println("学生已删除");
break;
}
}
testKeySet();
}
/*
* 修改学生信息
*/
public void testUpdate(){
console=new Scanner(System.in);
while(true){
System.out.println("请输入修改学生的ID:");
String ID=console.next();
Student stu=students.get(ID);
if(stu==null){
System.out.println("该学生不存在,请重新输入");
continue;
}else{
System.out.println("将要修改的学生姓名:"+stu.name);
System.out.println("输入修改后的学生姓名:");
String stuname=console.next();
Student newstu=new Student(stu.id,stuname);
students.put(stu.id, newstu);
break;
}
}
testKeySet();
}
/*map无索引 查询键 查询值
* 是否包含某个学生
*/
public void testContains(){
//使用containsKey() 用key值作为判断依据
boolean stu=students.containsKey("1");
if(stu){
Student stu1=students.get("1");
System.out.println(stu1.id+" : "+stu1.name);
}
//------------------------------------------
//使用containsValue() 用value值作为判断依据
//传入的是学生对象
Student value=new Student(null ,"2");
boolean isname=students.containsValue(value);
if(isname){
System.out.println("确实包含学生:"+value.name);
}else
{
System.out.println("不包含学生:"+value.name);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MapTest map=new MapTest();
map.testPut();
//map.testKeySet();
// map.testEntrySet();
// map.testUpdate();
map.testContains();
}
}
Java集合–Collections.sort()里面的学生类和课程类