package com.imooc.collection;
import java.util.Set;
import java.util.Map;
import java.util.Map.Entry;
import java.util.HashMap;
import java.util.Scanner;
public class MapTest {
/**
* 创建学生Map集合,规定泛型,键值String,value值Student 用来承装学生类型对象
*/
public Map<String, Student> students;
/**
* 在构造器中初始化students属性
*/
public MapTest() {
this.students = new HashMap<String, Student>();
}
/**
* 测试添加:输入学生ID,判断是否被占用 若未被占用,则输入姓名,创建新学生对象, 并且添加到students中
*/
int i = 0;
public void testPut() {
while (i < 3) {
i = putOne();//这个方法是一次增加一个
// i++;// 增加一名学生;
}
}
/**
* 一次增加一名学生
*/
private int putOne() {
Scanner input = new Scanner(System.in);
System.out.print("添加学生ID:");
String ID = input.next();
// 判断ID是否存在
if (students.get(ID) == null) {// 判断Map中的key值是否有相同的,没有就进入下一步
Student stus = students.get(ID);
// 判断学生对象是否为空
if (stus == null) {
// 空学生对象就提示输入学生姓名
System.out.print("输入学生姓名:");
String name = input.next();
// 创建新的学生对象
Student newStu = new Student(ID, name);
// 通过调用Map集合中的put()方法,添加ID-学生映射
students.put(ID, newStu);
System.out.println("成功添加学生:" + students.get(ID).getName());
}
return i+1;
} else {
System.out.println("该ID已存在!");
return i;
}
}
/**
* 测试Map的keySet()方法; 读取学生信息
*/
public void testKeySet() {
// 获取学生数量,集合的容量
System.out.println("共有" + students.size() + "名学生~");
System.out.println("ID\t" + "姓名");
// 通过keySet方法,返回Map中的所有"键"的Set集合
Set<String> stuID = students.keySet();
// 遍历keySet,取得每一个键,再调用get方法获取每个键对应的value
for (String keySet : stuID) {// stuID是一个键值的集合,通过遍历集合,获取每一个键值
Student stus = students.get(keySet);// 通过键值获取到对应value学生对象
if (stus != null) {// 判断学生对象不为空就获取姓名
System.out.println(stus.getID() + "\t" + stus.getName());
}
}
}
/**
* 测试删除Map中的映射 remove()
*/
public void testRemove() {
Scanner input = new Scanner(System.in);
while (true) {
System.out.print("请输入要删除的学生ID:");
String ID = input.next();
Student stu = students.get(ID);
// 判断如果学生对象是空则继续循环
if (stu == null) {
System.out.println("该ID不存在!");
continue;
}
// 不为空则删除ID对应的学生,打印一下删除学生的姓名,然后退出循环,别忘了
students.remove(ID);
System.out.println("已删除学生:" + stu.getName());
break;
}
}
/**
* 利用put()方法修改Map中已有的映射
*/
public void testModify() {
Scanner input = new Scanner(System.in);
while (true) {
System.out.print("输入要修改的学生ID:");
String id = input.next();
Student stu = students.get(id);
if (stu == null) {
System.out.println("该ID不存在!");
continue;
}
System.out.println("该学生姓名:" + stu.getName());
System.out.println("请输入新名字:");
String name = input.next();
students.put(id, (new Student(id, name)));
System.out.println("修改成功!");
break;
}
}
/**
* 通过 entrySet()访问学生集合数据 entrySet();返回的是键值对集合
*/
public void testeEntrySet() {
System.out.println("学生列表");
// System.out.println("ID\t" + "姓名");
Set<Entry<String, Student>> stuSet = students.entrySet();
for (Entry<String, Student> stu : stuSet) {// foreach()
System.out.println("获取键:" + stu.getKey() + ",对应的值为:" + stu.getValue().getName());
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
MapTest mt = new MapTest();
mt.testPut();
System.out.println("-------------------");
mt.testKeySet();
System.out.println("-------------------");
while (true) {
System.out.println("a.修改\tb.删除\tc.添加新学生\t0.退出");
String num = input.next();
if (num.equals("a")) {
mt.testModify();
} else if (num.equals("b")) {
mt.testRemove();
} else if (num.equals("c")) {
mt.putOne();
}else if (num.equals("0")) {
System.out.println("退出系统!");
break;
} else {
System.out.println("输入错误,请按提示输入~");
continue;
}
// switch (num) {
// case "a":
// mt.testModify();
// break;
// case "b":
// mt.testRemove();
// break;
// default:
// System.out.println("退出系统!");
// break;
// }
// break;
mt.testeEntrySet();
}
// System.out.println("-------------------");
// mt.testRemove();
// mt.testModify();
// System.out.println("-------------------");
// mt.testeEntrySet();
}
}
package com.imooc.collection;import java.util.Set;import java.util.Map;import java.util.Map.Entry;import java.util.HashMap;import java.util.Scanner;public class MapTest { /** * 创建学生Map集合,规定泛型,键值String,value值Student 用来承装学生类型对象 */ public Map<String, Student> students; /** * 在构造器中初始化students属性 */ public MapTest() { this.students = new HashMap<String, Student>(); } /** * 测试添加:输入学生ID,判断是否被占用 若未被占用,则输入姓名,创建新学生对象, 并且添加到students中 */ int i = 0; public void testPut() { while (i < 3) { i = putOne();//这个方法是一次增加一个// i++;// 增加一名学生; } } /** * 一次增加一名学生 */ private int putOne() { Scanner input = new Scanner(System.in); System.out.print("添加学生ID:"); String ID = input.next(); // 判断ID是否存在 if (students.get(ID) == null) {// 判断Map中的key值是否有相同的,没有就进入下一步 Student stus = students.get(ID); // 判断学生对象是否为空 if (stus == null) { // 空学生对象就提示输入学生姓名 System.out.print("输入学生姓名:"); String name = input.next(); // 创建新的学生对象 Student newStu = new Student(ID, name); // 通过调用Map集合中的put()方法,添加ID-学生映射 students.put(ID, newStu); System.out.println("成功添加学生:" + students.get(ID).getName()); } return i+1; } else { System.out.println("该ID已存在!"); return i; } } /** * 测试Map的keySet()方法; 读取学生信息 */ public void testKeySet() { // 获取学生数量,集合的容量 System.out.println("共有" + students.size() + "名学生~"); System.out.println("ID\t" + "姓名"); // 通过keySet方法,返回Map中的所有"键"的Set集合 Set<String> stuID = students.keySet(); // 遍历keySet,取得每一个键,再调用get方法获取每个键对应的value for (String keySet : stuID) {// stuID是一个键值的集合,通过遍历集合,获取每一个键值 Student stus = students.get(keySet);// 通过键值获取到对应value学生对象 if (stus != null) {// 判断学生对象不为空就获取姓名 System.out.println(stus.getID() + "\t" + stus.getName()); } } } /** * 测试删除Map中的映射 remove() */ public void testRemove() { Scanner input = new Scanner(System.in); while (true) { System.out.print("请输入要删除的学生ID:"); String ID = input.next(); Student stu = students.get(ID); // 判断如果学生对象是空则继续循环 if (stu == null) { System.out.println("该ID不存在!"); continue; } // 不为空则删除ID对应的学生,打印一下删除学生的姓名,然后退出循环,别忘了 students.remove(ID); System.out.println("已删除学生:" + stu.getName()); break; } } /** * 利用put()方法修改Map中已有的映射 */ public void testModify() { Scanner input = new Scanner(System.in); while (true) { System.out.print("输入要修改的学生ID:"); String id = input.next(); Student stu = students.get(id); if (stu == null) { System.out.println("该ID不存在!"); continue; } System.out.println("该学生姓名:" + stu.getName()); System.out.println("请输入新名字:"); String name = input.next(); students.put(id, (new Student(id, name))); System.out.println("修改成功!"); break; } } /** * 通过 entrySet()访问学生集合数据 entrySet();返回的是键值对集合 */ public void testeEntrySet() { System.out.println("学生列表"); // System.out.println("ID\t" + "姓名"); Set<Entry<String, Student>> stuSet = students.entrySet(); for (Entry<String, Student> stu : stuSet) {// foreach() System.out.println("获取键:" + stu.getKey() + ",对应的值为:" + stu.getValue().getName()); } } public static void main(String[] args) { Scanner input = new Scanner(System.in); MapTest mt = new MapTest(); mt.testPut(); System.out.println("-------------------"); mt.testKeySet(); System.out.println("-------------------"); while (true) { System.out.println("a.修改\tb.删除\tc.添加新学生\t0.退出"); String num = input.next(); if (num.equals("a")) { mt.testModify(); } else if (num.equals("b")) { mt.testRemove(); } else if (num.equals("c")) { mt.putOne(); }else if (num.equals("0")) { System.out.println("退出系统!"); break; } else { System.out.println("输入错误,请按提示输入~"); continue; }// switch (num) {// case "a":// mt.testModify();// break;// case "b":// mt.testRemove();// break;// default:// System.out.println("退出系统!");// break;// }// break; mt.testeEntrySet(); }// System.out.println("-------------------"); // mt.testRemove(); // mt.testModify();// System.out.println("-------------------");// mt.testeEntrySet(); }}
热门评论
怎么规范一下演示代码呀,每次发出来是连着的,别人的都是和eclipse里一样,规整的代码