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..net/pillow233/article/details/99427538
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
线性回归-一元线性回归