mooc_java 集合框架中 学生所选课程2Map&HashMap
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的更多相关文章
- mooc_java 集合框架上 学生所选课程
用一个集合Set存放学生所选课程接口不能实例化,所以用其实现类进行实例化 set接口不能实例化,通过HashSet这个实现类来进行实例化,需要导入包this.courses=new HashSet() ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- 第49节:Java集合框架中底层文档的List与Set
Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...
- Java集合框架中的快速失败(fail—fast)机制
fail-fast机制,即快速失败机制,是java集合框架中的一种错误检测机制.多线程下用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除),则会抛出Concurre ...
- Java集合框架中底层文档的List与Set
Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...
- Java集合框架中Map接口的使用
在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...
- Java集合框架中List接口的简单使用
Java集合框架可以简单的理解为一种放置对象的容器,和数学中的集合概念类似,Java中的集合可以存放一系列对象的引用,也可以看做是数组的提升,Java集合类是一种工具类,只有相同类型的对象引用才可以放 ...
- Java集合框架中的元素
之前有一篇笔记,讲的是集合和泛型,这几天看Java集合中几个接口的文档,思绪非常混乱,直到看到Oracle的“The Collections Framwork”的页面,条理才清晰些,现在进行整理. 一 ...
- Java中的函数式编程(五)Java集合框架中的高阶函数
写在前面 随着Java 8引入了函数式接口和lambda表达式,Java 8中的集合框架(Java Collections Framework, JCF)也增加相应的接口以适应函数式编程. 本文的 ...
随机推荐
- Flak快速上手
本文介绍如何上手 Flask . 这里假定你已经安装好了 Flask ,否则请先阅读< 安装>. 如果已安装好Flask,通过以下命令查看 一个简单的例子: from flask impo ...
- mysql 导入sql文件时编码报错
1.命令行导入 mysql -uroot -pnewpwd --default-character-set=utf8 databasename < xxx.sql 2.使用source导入 进入 ...
- HDU 3657 Game(取数 最小割)经典
Game Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- Oracle 查询一个表的所有字段
select * from user_tab_columns where table_name = 'T_B_CLIENT_MSG'
- 如何修改mindmanager默认字体为微软雅黑
mindmanager默认的字体是Verdana的,如何改为大家喜欢的其他字体呢?比如微软雅黑. 其实很简单,以我使用的是汉化版Mindmanager2012为例,只需要下面几个步骤 第1步:找到 ...
- Codeforces Round #263 (Div. 2) proB
题目: B. Appleman and Card Game time limit per test 1 second memory limit per test 256 megabytes input ...
- ip获取位置
$ip = $_SERVER["REMOTE_ADDR"]; $url = "http://ip.taobao.com/service/getIpInfo.php?ip= ...
- Android studio 混淆打包问题
参考 : Android Studio代码混淆设置以及上传mapping文件 AndroidStudio 混淆打包 在app 目录下 proguard-rules.pro中加入 通用 混淆 #指定代 ...
- Android模糊效果总结
1. 软件模糊 用软件的方法.利用cpu计算,无sdk版本号要求. 效果图: 关键模糊代码 github链接 原文 链接 译文 链接 演示样例 代码 本文地址 :http://blog.csdn.ne ...
- UITextView的一些技巧
1.在指定位置插入字符串: NSMutableString *TextViewStr=[[NSMutableString alloc] initWithString:TextView.text ...