示例代码:

学生类

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. window linux IPC ftok BY_HANDLE_FILE_INFORMATION

    看这题目就很乱,心情当然也是不怎么美好了.前一段时间做了一个项目,AIX(Unix的一种)中的一个系统向WINDOWS移植,开发环境由IBM的C/C++(叫什么忘记了,好像是xlC)变为VC++. 这 ...

  2. ios -逆向-代码混淆

    该方法只能针对有.m.h的类进行混淆,静态库等只有.h文件的没法进行混淆 代码混淆,刚刚看到是不是有点懵逼,反正我是最近才接触到这么个东西,因为之前对于代码和APP,只需要实现功能就好了,根本没有考虑 ...

  3. OpenCV学习笔记八:opencv_photo模块

    一,简介: 该库用于数码照片的处理,处于发展中,目前只包含如下算法: //! restores the damaged image areas using one of the available i ...

  4. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)2.3——用Eclipse ADT导出App

    问题: 想在一个已经存在的Eclipse ADT的项目中使用Gradle 解决方案: Eclipse ADT插件可以帮助生成Gradle文件 讨论: Eclipse的ADT插件是在2013年推出Gra ...

  5. PAT trie

    最近在上计算机应用编程,老师给了一个大小为900MB的含20000000行邮箱地址的文件. 然后再给出了1000条查询数据,让你用字典树建树然后查询是否出现过. 试了下普通的tire树,特意用二进制写 ...

  6. Sequence I

    Sequence I (hdu 5918) Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

  7. android菜鸟学习笔记31----Android使用百度地图API(二)获取地理位置及地图控制器的简单使用

    1.获取当前地理位置: Android中提供了一个LocationManager的类,用于管理地理位置.不能通过构造函数获取该类的实例,而是通过Context的getSystemService(): ...

  8. 基于apache —HttpClient的小爬虫获取网页内容

    今天(17-03-31)忙了一下午研究webmagic,发现自己还太年轻,对于这样难度的框架(类库) 还是难以接受,还是从基础开始吧,因为相对基础的东西教程相多一些,于是乎我找了apache其下的 H ...

  9. Vue.js中this.$nextTick()的使用

    this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行.在修改数据之后立即使用它,然后等待 DOM 更新.它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自 ...

  10. MySQL中行锁的算法

    行锁的3中算法 Record Lock:单个行记录上的锁 Gap Lock:间隙锁,锁定一个范围,但不包含记录本身 Next-key Lock:Gap Lock+Record Lock锁定一个范围,并 ...