1. 程式人生 > >通過Map對資料進行增刪改查

通過Map對資料進行增刪改查

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();
		

	}

}