Java中的集合框架(中)
- Map和HashMap
Map接口
1.Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value
2.Map中的键值对以Entry类型的对象实例形式存在
3.键(key值)不可重复,value可以
4.每个键最多只能映射到一个值
5.Map接口提供了分别返回key值集合,value值集合以及Entry(键值对)集合的方法
6.Map支持泛型,形式如:Map<K,V>
HashMap类
1.HashMap是Map 的一个重要实现类,也是最常用的,基于哈希表实现
2.HashMap中的Entry对象是无序排列的
3.key值和value值都可以为null,但是一个HashMap只能有一个key值为null的映射(key值不可重复)
- 学生选课——使用Map添加学生
- 学生选课——删除Map中的学生
- 学生选课——修改Map中的学生
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,判断是否被占用 * 若薇被占用,则输入姓名,创建新学生对象,并且 * 添加到student中 */ public void testPut(){ Scanner console=new Scanner(System.in); int i=0; while (i<3) { System.out.println("请输入学生ID"); String ID=console.next(); Student st=students.get(ID); if (st==null) { //提示输入学生姓名 System.out.println("请输入学生姓名"); String name=console.next(); //添加新的学生对象 Student newStudent=new Student(ID,name); students.put(ID,newStudent); System.out.println("成功添加学生:"+students.get(ID).name); i++; }else{ System.out.println("该学生ID已被占用"); continue; } } } /** * @param args测试Map的keySet方法 */ public void testKeySet(){ //keySet方法,返回Map中的所有“键”的Set集合 Set<String> keySet=students.keySet(); //取得student的容量 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) { // TODO Auto-generated method stub MapTest mt=new MapTest(); mt.testPut(); mt.testKeySet(); /*mt.testRemove(); mt.testEntrySet();*/ mt.testModify(); mt.testEntrySet(); } }
Java中的集合框架(中)的更多相关文章
- 菜鸟日记之 java中的集合框架
java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...
- Java中的集合框架(下)
学生选课--判断Set中课程是否存在 package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays ...
- Java中的集合框架(上)
Java中的集合框架概述 集合的概念: Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象. 集合的作用: 1.在类的内部,对数据进行组织: 2.简单的快速的搜索大数据量的 ...
- 第49节:Java集合框架中底层文档的List与Set
Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...
- Java集合框架中的快速失败(fail—fast)机制
fail-fast机制,即快速失败机制,是java集合框架中的一种错误检测机制.多线程下用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除),则会抛出Concurre ...
- Java中的集合框架-Collections和Arrays
上一篇<Java中的集合框架-Map>把集合框架中的键值对容器Map中常用的知识记录了一下,本节记录一下集合框架的两个工具类Collections和Arrays 一,Collections ...
- Java中的集合框架-Map
前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...
- Java中的集合框架-Collection(二)
上一篇<Java中的集合框架-Collection(一)>把Java集合框架中的Collection与List及其常用实现类的功能大致记录了一下,本篇接着记录Collection的另一个子 ...
- Java:类集框架中集合的学习
Java:类集框架中集合的学习 集合 Java:Set的学习 Set是类集框架中的集合类.集合是不按特定的方式排序,并且没有重复对象的一种类. Q:Set如何操作?Set中的不按特定方式排序是怎么排序 ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
随机推荐
- vue vuex vue-rouert后台项目——权限路由(超详细简单版)
项目地址:vue-simple-template共三个角色:adan barbara carrie 密码全是:123456 adan 拥有 最高权限A 他可以看到 red , yellow 和 blu ...
- LINUX:alias命令详解
发现目前安装的g++并没有开启选项 -std=c++11,无法使用c++11的新标准及其中的列表初始化.搜索后得到解决方法:键入:alias g++="g++ -std=c++11&quo ...
- Spring Boot实战之数据库操作
上篇文章中已经通过一个简单的HelloWorld程序讲解了Spring boot的基本原理和使用.本文主要讲解如何通过spring boot来访问数据库,本文会演示三种方式来访问数据库,第一种是Jdb ...
- Docker安装入门 -- 中间件镜像
Docker安装入门 -- 中间件镜像 php-fpm 1.docker build -t csphere/php-fpm:5.4 . //在当前目录下创建镜像 2.docker run -d - ...
- lodash源码分析之NaN不是NaN
暗恋之纯粹,在于不求结果,完全把自己锁闭在一个单向的关系里面. --梁文道<暗恋到偷窥> 本文为读 lodash 源码的第五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-l ...
- 跟我一起,利用bitcms内容管理系统从0到1学习小程序开发:一、IIS下SSL环境搭建
缘起 1.从事互联网十来年了,一直想把自己的从事开发过程遇到的问题给写出来,分享给大家.可是可是这只是个种想法,想想之后就放下了,写出来的类文章是少之又少.古人说无志之人常立志,有志之人立长志.今天, ...
- python中输出内容颜色得控制
参考:http://www.jb51.net/article/51237.htm 颜色代码 1)代码列表 格式:\[显示方式;前景色;背景色m 说明: 前景色 背景色 颜色 ------------- ...
- Python,PyCharm2017安装教程,包含注册码
一,安装PyCharm 1.下载PyCharm 进入https://www.jetbrains.com/pycharm/download/#section=windows官网下载页面,可以到到PyCh ...
- AspNet Core Web 应用程序的启动(有关 Program.cs类/ Startup.cs类 ) 当项目中干掉 Startup.cs 类如何设置启动 配置等等
.有关怎么创建Core MVC/API 这里就不说了,前段时间的博客有说过: 1. 项目生成后会有如图所示两个类 Program类Startup类 2. Startup类 初始内容 public ...
- 2017 年的 人生 hard 模式终于结束了,2018年回归初心
2017 年的 人生 hard 模式终于结束了,2018年回归初心 2017年对于我个人来讲, 毫不夸张的说 算是近十年来除了高考那一年,最最惊心动魄的一年了,没有之一. >>>开篇 ...