java集合实现简单的学生增删改查

java集合实现简单的学生增删改查

package collection;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

import javax.swing.text.html.parser.Entity;

public class MapTest {
	/**
	 * 创建一个map类型的属性,用来承载学生类型对象
	 * @param args
	 */
	//键值k的类型属性
	public Map<String, Student> students;
	
	/**
	 * 在构造方法中初始化students的属性
	 * @param args
	 */

	public MapTest() {
		this.students =new HashMap<String,Student>();
	}
	
	/**
	 *测试添加:输入学生ID,判断是否被占用
	 *若未被占用,这输入姓名,创建新的学生对象
	 *并且添加到students中 
	 * 
	 */
	public void testPut() {
		Scanner sc = new Scanner(System.in);
		//创建一个Scanner对象,用来获取输入的学生ID
		int i =0;
		while(i<3) {
			System.out.println("请输入学生ID:");
			String ID = sc.next();
			//判断ID是否被占用
			//创建一个学生对象,穿进去的ID是键,如果存在,返回对应的value值
			Student st = students.get(ID);
			if(st==null) {
				//提示输入学生姓名
				System.out.println("请输入学生姓名");
				String name =sc.next();
				//创建一个学生对象
				Student st2 = new Student(ID, name);
				//调用students的put方法,添加ID-学生映射
				students.put(ID, st2);
				System.out.println("成功添加学生"+students.get(ID).name);
				i++;
			}else {
				System.out.println("该学生ID已占用");
				//让循环继续
				continue;
			}
			
			
		}
	}
	/**
	 * 测试Map的KeySet方法
	 */
	public void testKeySet() {
		//通过KeySet方法,返回Map中所有“键”的Set集合  因为通过泛型规定了键的类型所以加了个String
		Set<String> Keyset = students.keySet();
		//取得students的容量
		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中的映射
	 * @param args
	 */
	public void testRemove() {
		
		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.println("请输入要删除学生的ID");
			String ID = sc.next();
			//判断该ID是否有学生对象
			Student st = students.get(ID);
			if(st==null) {
				System.out.println("未找到该学生对象");
				continue;
			}else {
				students.remove(ID);
				System.out.println("成功删除学生"+st.name);
				break;
			}
		}
		
	}
	/**
	 * 通过EntrySet方法来遍历Map
	 */
	public void testEntrySet() {
		//EntrySet方法,返回Map中所有的键值对
		Set<Entry<String, Student>> Entryset =students.entrySet();
		//遍历Entryset对象
		for (Entry<String, Student> entry : Entryset) {
			System.out.println("取得的键值:"+entry.getKey());
			System.out.println("对应的值为:"+entry.getValue().name);//此处的getvalue对应的是规定泛型中的Student一样的
			
		}
		
	}
	
	/**
	 * 利用put方法修改Map中的已有映射
	 * 
	 */
	public void testModify() {
		
		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.println("请输入要修改的学生ID");
			String ID = sc.next();
			//判断该ID是否有学生对象
			Student st = students.get(ID);
			
			if(ID==null) {
				System.out.println("该学生不存在,请重新输入");
				continue;
			}else {
				//提示当前对应的学生对象的姓名
				System.out.println("此学生为:"+st.name);
				//提示输入新的学生姓名,修改映射
				System.out.println("请输入新的姓名:");
				String name = sc.next();
				Student newstudent = new Student(ID, name);
				//利用put方法进行修改
				students.put(ID, newstudent);
				System.out.println("修改成功");
				break;
			}
			
		}
	}
	
	public static void main(String[] args) {
		MapTest m = new MapTest();
		m.testPut();
		m.testKeySet();
		m.testRemove();
		m.testEntrySet();
		m.testModify();
		m.testEntrySet();

	}

}

结果运行如下:
在这里插入图片描述
注:本文仅以Map为例,其他可参考本人的其他博客https://blog.csdn.net/pillow233/article/details/99427538

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值