Map&HashMap
Map提供映射关系,元素以键值对形式存储,Map的键值对一Entry类型的对象实例形式存在,key值不能重复,value可以
键最多能映射到一个值,支持泛型 Map<K,V>
HashMap是Map的一个重要实现类,基于哈希表实现,其中的Entry对象是无序排列的,key和value值都可以为null,但只能有一个key值为null的映射(key值不可以重复)

public class MapTest {
/**
* 承装学生类型对象
*/
public Map<String, Student> students;
public MapTest(){
this.students=new HashMap<String,Student>();
}
/**
* 测试添加:输入学生Id,判断是否被占用
* 若为被占用,则输入姓名,创建学生对象,并且添加到students中
* @param args
*/
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是否被占用
Student st=students.get(ID);
if(st==null){
System.out.println("请输入学生姓名:");
String name=console.next();
Student news=new Student(ID, name);
//调用students的put方法,添加ID-学生映射
students.put(ID,news);
System.out.println("成功添加学生:"+students.get(ID).name);
i++;
}
else{
System.out.println("该学生ID已被占用");
continue;
}
}
} /**
* 测试Map的keySet方法
* @param args
*/
public void testKeySet(){
//已经规定泛型为String类型
Set<String> ks=students.keySet();
//取得students的容量
System.out.println("总共有:"+students.size()+"个学生");
//遍历KeySet,取得每一个键,再调用个体方法取得每个键对应的value
for(String stuId:ks){
Student st=students.get(stuId);
if(st!=null)
System.out.println("学生:"+st.name);
}
} /**
* 测试删除Map中的映射
* @param args
*/
public void testRemove(){
//获取从键盘输入的待删除学生ID字符串
Scanner console=new Scanner(System.in);
while(true){
System.out.println("输入要删除的学生ID");
String stuID=console.next();
//判断是否有对应的学生对象
Student st=students.get(stuID);
if(st==null){
//提示输入的ID并不存在
System.out.println("该ID不存在");
continue;
}
students.remove(stuID);
System.out.println("成功删除学生"+st.name);
break;
}
}
/**
* 通过entrySet方法来遍历Map
*/
public void testEntrySet(){
//entrySet方法返回Map的所有键值对
//Set<Entry> es=students.entrySet();
Set<Entry<String,Student>> es=students.entrySet();
for(Entry<String,Student> entry:es){
System.out.println("取得键为:"+entry.getKey());
System.out.println("值为为:"+entry.getValue().name);
}
}
/**
* put方法修改Map中 已有的映射
* @param args
*/
public void testModify(){
System.out.println("请输入要修改的学生的ID:");
Scanner console=new Scanner(System.in);
while(true){
String stuID=console.next();
//判断是否有对应的学生对象
Student st=students.get(stuID);
if(st==null){
//提示输入的ID并不存在
System.out.println("该ID不存在");
continue;
}
else{
System.out.println("当前学生ID对应:"+st.name);
System.out.println("请输入新的学生姓名 :");
String name=console.next();
Student ns=new Student(stuID, name);
students.put(stuID, st);
System.out.println("修改成功");
break;
}
}
} public static void main(String[] args) {
MapTest mt=new MapTest();
mt.testPut();
mt.testKeySet();
mt.testRemove();
mt.testEntrySet();
mt.testModify();
mt.testEntrySet();
} }

mooc_java 集合框架中 学生所选课程2Map&HashMap的更多相关文章

  1. mooc_java 集合框架上 学生所选课程

    用一个集合Set存放学生所选课程接口不能实例化,所以用其实现类进行实例化 set接口不能实例化,通过HashSet这个实现类来进行实例化,需要导入包this.courses=new HashSet() ...

  2. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

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

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

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

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

  5. Java集合框架中底层文档的List与Set

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

  6. Java集合框架中Map接口的使用

    在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...

  7. Java集合框架中List接口的简单使用

    Java集合框架可以简单的理解为一种放置对象的容器,和数学中的集合概念类似,Java中的集合可以存放一系列对象的引用,也可以看做是数组的提升,Java集合类是一种工具类,只有相同类型的对象引用才可以放 ...

  8. Java集合框架中的元素

    之前有一篇笔记,讲的是集合和泛型,这几天看Java集合中几个接口的文档,思绪非常混乱,直到看到Oracle的“The Collections Framwork”的页面,条理才清晰些,现在进行整理. 一 ...

  9. Java中的函数式编程(五)Java集合框架中的高阶函数

    写在前面 随着Java 8引入了函数式接口和lambda表达式,Java 8中的集合框架(Java Collections Framework, JCF)也增加相应的接口以适应函数式编程.   本文的 ...

随机推荐

  1. IOS之怎样把自己开发的App安装到越狱的手机

    场景: 有开发人员账号,能够把设备加到开发人员账号中,真机调试.如今须要打包,安装到的越狱手机上(此越狱手机没有加到开发人员账号中,另外公司的人). 常识: 没有越狱的话,最大的问题就是设备的签名,每 ...

  2. 管理voting disks

     管理voting disks 一.关于voting disk 的一些必需要知道的东西: 11g 曾经我们能够使用dd 命令来备份voting disk ,可是在11g 以后 oracle 不再支 ...

  3. java类库中的设计模式

    原帖:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns 提问:我正在学习GoF的<设计模式&g ...

  4. 前端PC页面,移动端页面问题笔记~~

    <!DOCTYPE html> <html> <head> <meta charset="gbk"/> <meta name= ...

  5. 移动app性能测试(待完善)

    移动终端性能测试是测试手机终端是否符合特定性能指标的测试,包括有:内存.CPU.电量.流量.流畅度.时延等 测试准备:测试账号.测试需求.测试用例.待测手机.待测应用包.测试工具.测试电脑 1.  时 ...

  6. String 的fomat方法日期转换

    一.常规类型.字符类型和数值类型的格式说明符的语法如下:%[argument_index$][flags][width][.precision]conversion 可选的 argument_inde ...

  7. XP,32/64位Win7,32/64位Win8,32/64位Win10系统 【春节版】

    本系统是10月5日最新完整版本的Windows10 安装版镜像,win10正式版,更新了重要补丁,提升应用加载速度,微软和百度今天宣布达成合作,百度成为win10 Edge浏览器中国默认主页和搜索引擎 ...

  8. HTML5,不仅仅是看上去非常美(第二弹:打造最美3D机房)

    前言 近期项目开发任务告一段落,刚好有时间整理这大半年的一些成果.使用html5时间还不久,对js的认识还不够深入.没办法,曾经一直搞java,对js的一些语言特性和概念一时还转换只是来. 上一篇第一 ...

  9. python 基础 8.1 r 正则对象

                                                                                                        ...

  10. phthon 基础 7.3 logging 日志模块

    一. logging 的使用 日志是我们排查问题的关键利器,写好日志记录,当我们发生问题时,可以快速定位代码范围进行修改.python有给我们开发者提供好的日志模块,下面我们就来介绍一下logging ...