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是一次添加一对元素. ...
随机推荐
- 深入理解计算机系统_3e 第四章家庭作业(部分) CS:APP3e chapter 4 homework
4.52以后的题目中的代码大多是书上的,如需使用请联系 randy.bryant@cs.cmu.edu 更新:关于编译Y86-64中遇到的问题,可以参考一下CS:APP3e 深入理解计算机系统_3e ...
- JavaScript 数组最大值
JavaScript 数组最大值 在js中可以使用Math.max()获取最大值. 如: console.log(Math.max("1","11"," ...
- [array] leetcode - 39. Combination Sum - Medium
leetcode - 39. Combination Sum - Medium descrition Given a set of candidate numbers (C) (without dup ...
- Libevent源码分析 (1) hello-world
Libevent源码分析 (1) hello-world ⑨月份接触了久闻大名的libevent,当时想读读源码,可是由于事情比较多一直没有时间,现在手头的东西基本告一段落了,我准备读读libeven ...
- Java I/O---Properties类(持久化键值对)
1.Properties类简介 Properties类(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这 ...
- Wincc flexable的IO域组态
1.题目 2.新建三个变量 3.组态画面,添加IO域1 1)常规设置 2)属性设置 4.组态IO域2 1)常规项 2)属性设置 5.组态第三个IO域 1)常规设置 2)属性设置 6.此外可以设置动画 ...
- bzoj 2959: 长跑
Description 某校开展了同学们喜闻乐见的阳光长跑活动.为了能"为祖国健康工作五十年",同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑运动.一时间操场上 ...
- js中的call()方法与apply()方法
摘自:http://blog.csdn.net/chelen_jak/article/details/21021101 在web前端开发过程中,我们经常需要改变this指向,通常我们想到的就是用cal ...
- 佛祖保佑永无bug的源代码
${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}_ooOoo_${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIG ...
- 记录python学习过程中的一些小心得
1.python中一切皆对象,内置数据结构也是对象.处理一个对象就是利用它带有的方法和属性,对该对象进行处理,一步步达到我们想要的结果. 2.编程时,先构思好我们处理的对象是什么,具有哪些属性和方法, ...