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(); } }

Java入门第三季——Java中的集合框架(中):Map&HashMap的更多相关文章

  1. 《java入门第一季》之集合框架(Collection小儿子Set集合)

    /*  * Collection主要的连个儿子:  * |--List  * 有序(存储顺序和取出顺序一致),可重复  * |--Set  * 无序(存储顺序和取出顺序不一致),唯一  *   * H ...

  2. 《java入门第一季》之集合框架TreeSet存储元素自然排序以及图解

    这一篇对TreeSet做介绍,先看一个简单的例子: * TreeSet:能够对元素按照某种规则进行排序.  * 排序有两种方式  * A:自然排序: 从小到大排序  * B:比较器排序    Comp ...

  3. 菜鸟日记之 java中的集合框架

    java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...

  4. Java中的集合框架(下)

    学生选课--判断Set中课程是否存在 package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays ...

  5. Java中的集合框架(上)

    Java中的集合框架概述 集合的概念: Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象. 集合的作用: 1.在类的内部,对数据进行组织: 2.简单的快速的搜索大数据量的 ...

  6. 第49节:Java集合框架中底层文档的List与Set

    Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...

  7. Java集合框架中的快速失败(fail—fast)机制

      fail-fast机制,即快速失败机制,是java集合框架中的一种错误检测机制.多线程下用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除),则会抛出Concurre ...

  8. Java中的集合框架-Collections和Arrays

    上一篇<Java中的集合框架-Map>把集合框架中的键值对容器Map中常用的知识记录了一下,本节记录一下集合框架的两个工具类Collections和Arrays 一,Collections ...

  9. Java中的集合框架-Map

    前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...

随机推荐

  1. OpenCV.学习OpenCV.pdf

    1.Pdf.P160(书.P129) “表5-1:平滑操作的各总类型” 的列名 看起来很模糊,现在先把尽可能看得清的字记录下来: 平滑类型 名称 支持 No 输入数据类型 输出数据类型 简要说明 2. ...

  2. Mybatis插件之Mybatis-Plus的CRUD方法

    使用Mybatis-plus进行基本的CRUD(增查改删)操作. 实体类(User)代码: import com.baomidou.mybatisplus.annotation.IdType; imp ...

  3. Date、DateFormat和Calendar类的简单认识

    第三阶段 JAVA常见对象的学习 Date.DateFormat和Calendar类的简单认识 Date类 Date:表示特定的瞬间,精确到毫秒. (一) 构造方法: Date():根据当前的默认毫秒 ...

  4. 关于spring 事务 和 AOP 管理事务和打印日志问题

    关于spring 事务 和 AOP 管理事务和打印日志问题 1. 就是支持事务注解的(@Transactional) . ​ 可以在server层总使用@Transactional,进行方法内的事务管 ...

  5. php 求两个数组的差集应该注意的事情

    对于 phper 来说 array_diff 这个函数应该知道它的用途,获取两个数组的差集,我理解中的差集是这样的 但是执行下代码会发现结果并不是 <?php $a = [1,2,3,4,5]; ...

  6. 20190728-Python爬取视频&切割视频&视频加水印

    1.视频爬取 1.下载视频的源码如下: import os import requests from bs4 import BeautifulSoup import threading from bj ...

  7. vim 插件 入门

    vim 手册 vimtutor 精简版本 help user-manual 详细手册 一些vim自带设置 set nu "显示行号 set cursorline "高亮显示当前行 ...

  8. Java并发与多线程教程(3)

    Java中的锁 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂.因为锁(以及其它更高级的线程同步机制)是由synchronized同步 ...

  9. C语言 读取配置文件

    配置文件截图: 读取结果截图: 代码转自:http://www.tuicool.com/articles/Zb2iIn 附代码: // ReadConfig.cpp : 定义控制台应用程序的入口点. ...

  10. Oracle 分页语句

    ** 写法1 :采用 ROWNUM的伪列: --查询10到20之间的数据 -- SELECT * FORM ( -- SELECT * , ROWNUM rn FROM TABLE_NAME -- W ...