示例代码:

学生类

package com.imooc.collection;

import java.util.HashSet;
import java.util.Set; /**
* 学生类
* Set中的元素是唯一的,不会重复,但是没有顺序。
*/ public class Student { private String id; private String name; // set集合只能使用 foreach 或 iterator进行遍历,不能使用get()来获取元素
public Set <Course> course; public Student(){ } public Student(String id, String name){
this.id = id;
this.name = name;
this.course = new HashSet<>();
} public void setId(String id) {
this.id = id;
} public void setName(String name) {
this.name = name;
} public void setCourse(Set<Course> course) {
this.course = course;
} public String getId() {
return id;
} public String getName() {
return name;
} public Set getCourse() {
return this.course;
}
}

学生集合

package com.imooc.map;

import com.imooc.collection.Student;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set; public class MapTest { /**
* 用来承装学生类型对象
*/
private final Map<String, Student> students = new HashMap<>(); /**
* 在构造器中初始化students属性
*/ public MapTest(){
} /**
* 测试添加:输入学生ID,判断是否被占用
* 若未被占用,则输入姓名,创建新学生对象,并且添加到Students中
*/
private 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 newStudent = new Student(ID, name);
// 通过调用students的put方法,添加ID-学生映射
students.put(ID, newStudent);
System.out.println("成功添加学生:" + students.get(ID).getName());
i ++;
} else {
System.out.println("该学生ID已被占用!");
}
}
} /**
* 通过keySet方法来遍历Map
*/
private void testKeySet(){
// 通过keySet方法,获取Map中所有的"键"集合
Set<String> keySet = students.keySet();
System.out.println("共获取:" + keySet.size() + " 个学生!"); // 通过Key从Students中获取Student对象
for(String stuId: keySet){
Student st = students.get(stuId);
System.out.println("学生ID:" + st.getId() + "; 学生姓名:" + st.getName());
}
} /**
* 通过 entrySet方法来遍历Map
*/
private void testEntrySet(){
// 通过entrySet方法,返回Map中的所有"键值对"
Set<Map.Entry<String, Student>> entrySet = students.entrySet();
for(Map.Entry<String, Student> entry: entrySet){
System.out.println("从EntrySet中获取键:" + entry.getKey());
System.out.println("从EntrySet中获取值:" + entry.getValue().getName());
}
} /**
* 测试删除Map中的元素
*/
private void testRemove(){
// 提示输入待删除学生的ID
Scanner console = new Scanner(System.in);
while(true){
System.out.println("请输入要删除的学生ID:");
String ID = console.next();
Student st = students.get(ID);
if (st == null) {
System.out.println("该ID不存在!");
continue;
}
students.remove(ID);
System.out.println("成功删除学生:" + st.getName());
break;
}
} /**
* 测试修改Map中的元素: replace or put 都可以实现
*/
private void testModify(){
// 提示输入待修改的学生ID
Scanner console = new Scanner(System.in);
while (true){
System.out.println("请输入要修改的学生ID:");
String ID = console.next();
Student st = students.get(ID);
if (st == null) {
System.out.println("该学生ID不存在,请重新输入!");
} else {
System.out.println("请输入要修改的学生姓名:");
String name = console.next();
Student newST = new Student(ID, name);
students.replace(ID, newST);
break;
} }
} public static void main(String[] args){
MapTest mt = new MapTest();
mt.testPut();
mt.testKeySet();
mt.testRemove();
mt.testEntrySet(); mt.testModify();
mt.testEntrySet();
} }

Java Map增删改查的更多相关文章

  1. JAVA JDBC 增删改查简单例子

    1.数据库配置文件jdbc.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test username= ...

  2. java中增删改查(CRUD)总结

    对于User表增删改查:1:save(保存方法)  view(查询所有记录) update(更新方法) delete(删除方法) 通过method这个参数进行判断执行不同的操作 2: 具体的实现:   ...

  3. Java MVC 增删改查 实例

    需求:实现增加新部门的功能,对应数据库表示Oracle的dept表 一.Java MVC 增 实现: 1.视图层(V):注册部门 deptAdd.jsp 在注册新部门页面只需输入“部门名称”和“城市” ...

  4. 基于mongodb的java之增删改查(CRUD)

    1,下载驱动https://github.com/mongodb/mongo-java-driver/downloads,导入工程java中 2,建立测试代码 import java.net.Unkn ...

  5. Java数据库增删改查

    数据库为MySQL数据库,Oracle数据库类似: create database db_test;--创建数据库 ';--创建用户 grant all privileges on db_test.* ...

  6. mongoDB用java实现增删改查

    package mongo; import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mo ...

  7. java连接数据库增删改查公共方法

    package dao; import java.io.IOException; import java.sql.CallableStatement; import java.sql.Connecti ...

  8. Java List 增删改查

    定义2个类,课程类和选课类 package com.imooc.collection; /** * 课程类 */ public class Course { private String id; pr ...

  9. java mongodb 增删改查 工具类

    package com.jttx.demo;   import com.mongodb.*; import com.mongodb.util.JSON;   import java.net.Unkno ...

随机推荐

  1. 程序运行缺少MSVCR110.dll

    Download Visual C++ Redistributable for Visual Studio 2012 Update 4 from Official Microsoft Download ...

  2. OpenCV学习笔记十六:opencv_calib3d模块

    一,简介: 该库用于3D信息重建,姿态估计,摄像机标定等.

  3. P​H​P​制​作​姓​名​、​学​号​。​爱​好​等​窗​口

    if (radioButton1.Checked == true)                textBox2.Text = 姓名: + textBox1.Text +    性别: + radi ...

  4. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)4.2——增加自定义task

    问题: 你想要在整体的构建过程中加入自定义的task. 解决方案: 使用dependOn属性将你的任务插入 directed acyclic graph 讨论: 在初始化阶段,Gradle将任务根据依 ...

  5. 使用yum 出现 Loaded plugins: fastestmirror

    使用yum 安装是出现 : Loaded plugins: fastestmirror [root@localhost yum.repos.d]# yum –y install httpd  http ...

  6. iOS学习笔记(九)——xml数据解析

    在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.KissXML.Tiny ...

  7. [HAOI2012]Road

    2750: [HAOI2012]Road Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 728  Solved: 349[Submit][Status ...

  8. poj3159

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 28133   Accepted: 7766 Descrip ...

  9. Cocos2d-x Lua中帧动画

    帧动画就是按一定时间间隔.一定的顺序.一帧一帧地显示帧图片.我们的美工要为精灵的运动绘制每一帧图片,因此帧动画会由很多帧组成,按照一定的顺序切换这些图片就可以了. 在Cocos2d-x Lua中播放帧 ...

  10. EasyNVR摄像机无插件流媒体服务器对所在操作系统配置的需求

    背景需求 随着EasyNVR使用的用户越来越多,用户在使用过程中的常见问题我们也做出了一定的总结,以及在升级到3.0版本之后,我们的启动方式和配置 功能也有了一些改变.因此在此做出一些总结. 对于Ea ...