通過Map對資料進行增刪改查
阿新 • • 發佈:2019-01-05
Map專門用來處理鍵值對映資料的儲存。
常用方法:
1.put(Object key,Object value) 新增一對鍵值
2.get(Object key) 根據鍵返回相關的值,如果不存在指定的鍵,則返回空值。
3.remove(Object key) 刪除由指定的鍵對映的鍵值對
4.size() 返回元素個數
5.keySet() 返回鍵的集合
6.value() 返回值得集合
7.containsKey(Object key) 如果存在由指定的鍵對映的鍵值對,返回true。
實現程式碼:
建立學生物件:
增刪改查:package imooc; import java.util.HashSet; import java.util.Set; //學生類 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>(); }
package imooc; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.Set; public class mapTest { //用來盛裝學生型別的物件 public Map<String,Student> student; //在構造器中初始化student屬性 public mapTest(){ student=new HashMap<String,Student>(); } //測試新增,從鍵盤輸入學生id,判斷是否佔用,並輸出提示。把學生新增到studnet屬性中。 public void testPut(){ Scanner input=new Scanner(System.in); for(int i=0;i<3;){ System.out.println("輸入學生id"); String ID=input.next(); Student stuid=student.get(ID); if(stuid==null){ System.out.println("請輸入學生姓名"); String name=input.next(); //建立一個新的學生物件 Student newStudent=new Student(ID,name); student.put(ID, newStudent); System.out.println("成功新增學生:"+student.get(ID).name); i++; }else{ System.out.println("該學生ID已存在"); } continue; } } //測試Map的keySet方法 public void testKeyset(){ //keySet方法,返回Map中的所有key的Set集合。 Set<String> keyset=student.keySet(); //取得student的容量 System.out.println("總共有"+student.size()+"名學生"); //遍歷keyet,取得每一個鍵 值,通過get方法取得value值。 for(String id:keyset){ Student st=student.get(id); if(st!=null){ System.out.println(st.id+" "+st.name); } } } //測試刪除 public void testRemove(){ Scanner input=new Scanner(System.in); while(true){ System.out.println("請輸入要刪除學生的ID"); String ID=input.next(); Student st=student.get(ID); if(st==null){ System.out.println("該ID不存在"); continue; } student.remove(ID); System.out.println("成功刪除學生:"+st.name); break; } } //通過entrySet方法遍歷Map public void testentrySet(){ //通過entrySet方法,返回Map中的所有鍵值對 Set<Entry<String,Student>> entrySet=student.entrySet(); for(Entry<String,Student> entry:entrySet ){ System.out.println("取得鍵"+entry.getKey()+" "+"取得值"+entry.getValue().name); } } //測試修改 public void xiugai(){ Scanner input=new Scanner(System.in); while(true){ System.out.println("請輸入需要修改的學生的ID"); String ID=input.next(); Student st=student.get(ID); if(st==null){ System.out.println("該ID不存在"); continue; } System.out.println("當前所要修改的ID對應的學生:"+st.name); System.out.println("請輸入學生姓名:"); String name=input.next(); Student newstu=new Student(ID,name); student.put(ID,newstu ); System.out.println("修改成功"); break; } } //測試Map中是否包含某個key或value public void testMapContains(){ System.out.println("輸入要查詢的學生ID:"); Scanner input=new Scanner(System.in); String id=input.next(); System.out.println("學生對映表中是否包含鍵"+id+" "+student.containsKey(id)+ "對應的學生為"+student.get(id).name); System.out.println("輸入要查詢的學生名字:"); String name=input.next(); System.out.println("學生對映表中是否存在學生"+name+" "+ student.containsValue(new Student(null,name))); } public static void main(String[] args) { mapTest it=new mapTest(); it.testPut(); it.testKeyset(); //it.testRemove(); //1it.xiugai(); //it.testentrySet(); it.testMapContains(); } }