package com.imooc.collection;

 import java.util.HashSet;
import java.util.Set; /**
* 学生类
* @author Administrator
*
*/
public class Student { public String id; public String name; public Set<Course> courses; public Student(String id, String name) {
this.id = id;
this.name = name;
this.courses = new HashSet<Course>();
}
}
 package com.imooc.collection;

 /**
* 课程类
* @author Administrator
*
*/
public class Course { public String id; public String name; public Course(String id, String name) {
this.id = id ; this.name = name;
} public Course() { }
}
 package com.imooc.collection;

 import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set; public class MapTest { /**
* 用来承装学生类型对象
*/
public Map<String, Student> students; /**
* 在构造器中初始化students属性
*/
public MapTest() {
this.students = new HashMap<String, Student>();
} /**
* 测试添加:输入学生ID,判断是否被占用 若未被占用,则输入姓名,创建新学生对象,并且 添加到students中
*/
public void testPut() {
// 创建一个Scanner对象,用来获取输入的学生ID和姓名
Scanner console = new Scanner(System.in);
int i = 0;
while (i < 3) {
System.out.println("请输入学生ID:");
String ID = console.next();//获取从键盘输入的ID字符串
// 判断该ID是否被占用
Student st = students.get(ID);//获取该键对应的value值
if (st == null) {
// 提示输入学生姓名
System.out.println("请输入学生姓名:");
String name = console.next();//取得键盘输入的学生姓名的字符串
// 创建新的学生对象
Student newStudent = new Student(ID, name);
// 通过调用students的put方法,添加ID-学生映射
students.put(ID, newStudent);
System.out.println("成功添加学生:" + students.get(ID).name);
i++;
} else {
System.out.println("该学生ID已被占用!");
continue;
}
}
} /**
* 测试Map的keySet方法,返回集合的方法
* 通过keySet和get方法去遍历Map中的每个value
*/
public void testKeySet() {
// 通过keySet方法,返回Map中的所有“键”的Set集合
Set<String> keySet = students.keySet();
// 取得students的容量
System.out.println("总共有:" + students.size() + "个学生!");
// 遍历keySet,取得每一个键,再调用get方法取得每个键对应的value
for (String stuId : keySet) {
Student st = students.get(stuId);
if (st != null)
System.out.println("学生:" + st.name);
}
} /**
* 测试删除Map中的映射
*/
public void testRemove() {
// 获取从键盘输入的待删除学生ID字符串
Scanner console = new Scanner(System.in);
while (true) {
// 提示输入待删除的学生的ID
System.out.println("请输入要删除的学生ID!");
String ID = console.next();
// 判断该ID是否有对应的学生对象
Student st = students.get(ID);
if (st == null) {
// 提示输入的ID并不存在
System.out.println("该ID不存在!");
continue;
}
students.remove(ID);
System.out.println("成功删除学生:" + st.name);
break;
}
} /**
* 通过entrySet方法来遍历Map
*/
public void testEntrySet() {
// 通过entrySet方法,返回Map中的所有键值对
Set<Entry<String, Student>> entrySet = students.entrySet();
for (Entry<String, Student> entry : entrySet) {
System.out.println("取得键:" + entry.getKey());
System.out.println("对应的值为:" + entry.getValue().name);
}
} /**
* 利用put方法修改Map中的已有映射
*/
public void testModify() {
// 提示输入要修改的学生ID
System.out.println("请输入要修改的学生ID:");
// 创建一个Scanner对象,去获取从键盘上输入的学生ID字符串
Scanner console = new Scanner(System.in);
while (true) {
// 取得从键盘输入的学生ID
String stuID = console.next();
// 从students中查找该学生ID对应的学生对象
Student student = students.get(stuID);
if (student == null) {
System.out.println("该ID不存在!请重新输入!");
continue;
}
// 提示当前对应的学生对象的姓名
System.out.println("当前该学生ID,所对应的学生为:" + student.name);
// 提示输入新的学生姓名,来修改已有的映射
System.out.println("请输入新的学生姓名:");
String name = console.next();
Student newStudent = new Student(stuID, name);
students.put(stuID, newStudent);
System.out.println("修改成功!");
break;
}
} /**
* @param args
*/
public static void main(String[] args) {
MapTest mt = new MapTest();
mt.testPut();
mt.testKeySet();
// mt.testRemove();
// mt.testEntrySet();
// mt.testModify();
// mt.testEntrySet(); } }

最新文章

  1. JavaScript笔试必备语句【转】
  2. 《selenium2 Java 自动化测试实战(第二版)》 更新2016.5.3
  3. 解决Android SDK Content Loader 0%的问题
  4. jenkins调度selenium脚本不打开浏览器解决办法
  5. Python开发【第十六篇】:AJAX全套
  6. centos 6.4 安装视频解码器
  7. Windows Server 2008 R2 域控修改域用户密码复杂性
  8. BASM遵循的规则
  9. flexbox弹性盒子布局
  10. POJ2723-Get Luffy Out(2-SAT)
  11. Unity之Avatar原理
  12. Aliyun EMR 集群重启
  13. url语法
  14. 【Visual C++】游戏编程学习笔记之八:鼠标输入消息(小demo)
  15. java之集合Collection 3个例子
  16. 【C++ Primer 第7章】定义抽象数据类型
  17. 蚂蚁金服 Service Mesh 渐进式迁移方案|Service Mesh Meetup 实录
  18. leetcode笔记:Bulls and Cows
  19. MHL相关资源链接
  20. Jquery detect page refresh

热门文章

  1. Windows10系统Python2.7通过Swig调用C++过程
  2. mysql 全表扫描场景
  3. 洛谷 题解 CF711A 【Bus to Udayland】
  4. Centos7 添加开机启动服务
  5. Java:集合类的数据结构
  6. 【51nod】2590 持续讨伐
  7. idea配置glassFish启动项目
  8. thinkphp5.1中使用Bootstrap4分页样式修改
  9. 用pandas库对csv文件中的文本数据进行分析处理
  10. 测试常用__linux命令