判断 Map 中是否包含指定的 key 和 value
2017-05-26 09:24
507 查看
重写name的hashcode()和equals()方法
1
package com.imooc.collection; import java.util.HashSet; import java.util.Set; /** * 学生类 * @author Monica * */ public class Student { public String id; public String name; public Set<Course> courses; public Student(String id,String name){ this.id = id; this.name = name; this.courses = new HashSet<Course>();//set接口调用 } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Student)) return false; Student other = (Student) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } }
1
package com.imooc.collection; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.Set; public class MapTest { /** * 用来承装学生类型对象 * @param args */ public Map<String,Student> students; /** * 在构造方法中初试化students属性 * @param args */ public MapTest(){ this.students = new HashMap<String,Student>(); } /** * 测试添加:输入学生ID,判断是否被占用 * 若未被占用,则输入姓名,创建新学生对象,并且添加到students中 * @param args */ public 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).name); i++; }else{ System.out.println("该学生ID已被占用!"); continue; } } } /** * 测试Map中是否包含某个Key值或value值 */ public void testContainsKeyOrValue(){ //提示输入学生id System.out.println("请输入要查询的学生ID:"); Scanner console = new Scanner(System.in); String id = console.next(); //在Map中,用containsKey()方法,来判断是否包含某个Key值 System.out.println("您输入的学生ID为:"+id+",在学生映射表中是否存在:"+students.containsKey(id)); if(students.containsKey(id)) System.out.println("对应的学生为:"+students.get(id).name); //提示输入学生姓名 System.out.println("请输入要查询的学生姓名:"); String name = console.next(); //在containsValue()方法,来判断是否包含某个Value值 if(students.containsValue(new Student(null,name))) System.out.println("在学生映射表中,确实包含学生:"+name); else System.out.println("在学生映射表中不存在该学生!"); } /** * 测试Map的keySet方法 * @param args */ public void testKeySet(){ //通过keySet方法,返回Map中的所有“键”的Set集合 Set<String> keySet = students.keySet(); //取得Map的容量,调用set方法 System.out.println("总共有"+keySet.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(){ //获取从键盘输入的待删除学生Id字符串 Scanner console = new Scanner(System.in); while(true){ //提示输入待删除的学生的ID System.out.println("请输入要删除的学生ID!"); String ID = console.next(); //判断该ID是否有对应的学生对象 Student st = students.get(ID); if(st==null){ //提示输入的ID并不存在 System.out.println("该ID不存在!"); continue; }else{ students.remove(ID); System.out.println("成功删除学生:"+st.name); break; } } } /** * 通过entrySet方法来遍历Map * @param args */ public void testEntrySet(){ //通过entrySet方法,返回Map中的所有键值对 Set<Entry<String,Student>> entrySet = students.entrySet(); for(Entry<String,Student> entry:entrySet){ System.out.println("取得键:"+entry.getKey()); System.out.println("对应的值为:"+entry.getValue().name); } } /** * 利用put方法修改Map中已有映射 * @param args */ public void testModify(){ //提示输入要修改的学生Id System.out.println("请输入要修改的学生ID:"); //创建一个Scanner对象,去获取从键盘输入的学生ID字符串 Scanner console = new Scanner(System.in); while(true){ //取得从键盘输入的学生ID String stuID = console.next(); //从students中查找该学生ID对应的学生对象 Student student = students.get(stuID); if(student == null){ System.out.println("该ID不存在!请重新输入!"); continue; } //提示当前对应的学生对象的姓名 System.out.println("当前该学生ID,所对应的学生为:"+student.name); //提示输入新的学生姓名,来修改已有的映射 System.out.println("请输入新的学生姓名:"); String name = console.next(); Student newStudent = new Student(stuID,name); students.put(stuID, newStudent); System.out.println("修改成功!"); break; } } public static void main(String[] args) { // TODO Auto-generated method stub MapTest mt = new MapTest(); mt.testPut(); mt.testKeySet(); //mt.testRemove(); //mt.testEntrySet(); //mt.testModify(); //mt.testEntrySet(); mt.testContainsKeyOrValue(); } }
相关文章推荐
- Map.containsKey/Map.containsValue方法——判断Map集合对象中是否包含指定的键名
- 【慕课笔记】第六章 JAVA中的集合框架(下) 第4节 学生选课——判断Map中是否包含指定的key和value
- 判断 Map 中是否包含指定的 key 和 value
- JavaSE8基础 HashMap<Integer,String> containsKey/Value 判断集合是否包含指定的键或值
- 判断map中是否含有某个key,如包含则结果value相加,如不包含则新增
- Map.containsKey方法——判断Map集合对象中是否包含指定的键名
- jsoncpp判断Value中是否含有指定的key
- map.containsKey()方法——判断是否包含指定的键名
- Map.containsKey方法——判断Map集合对象中是否包含指定的键名
- 判断Map的value值是否相等,相等则将key值组成字符串
- Map.containsKey方法——判断Map集合对象中是否包含指定的键名
- 判断Java中map键值对中是否包含一个key
- PHP判断某个数组中是否存在指定的key,函数array_key_exists()
- 判断 DataReader 里面是否包含指定的列
- containsKey方法——判断是否包含指定的键名
- php判断数组中是否存在指定键(key)的方法
- 判断json数据是否包含key
- jQuery判断数组是否包含了指定的元素
- jquery 判断字符串是否包含指定字符串
- oracle字符串载取及判断是否包含指定字符串