1. 程式人生 > >Java Map增刪改查

Java Map增刪改查

測試 hash mooc tid 提示 類型 system.in ring 實現

示例代碼:

學生類

package com.imooc.collection;

import java.util.HashSet;
import java.util.Set;

/**
 * 學生類
 * Set中的元素是唯一的,不會重復,但是沒有順序。
 */

public class Student {

    private String id;

    private String name;

    // set集合只能使用 foreach 或 iterator進行遍歷,不能使用get()來獲取元素
    public Set <Course> course;

    
public Student(){ } public Student(String id, String name){ this.id = id; this.name = name; this.course = new HashSet<>(); } public void setId(String id) { this.id = id; } public void setName(String name) { this.name = name; }
public void setCourse(Set<Course> course) { this.course = course; } public String getId() { return id; } public String getName() { return name; } public Set getCourse() { return this.course; } }

學生集合

package com.imooc.map;

import
com.imooc.collection.Student; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util.Set; public class MapTest { /** * 用來承裝學生類型對象 */ private final Map<String, Student> students = new HashMap<>(); /** * 在構造器中初始化students屬性 */ public MapTest(){ } /** * 測試添加:輸入學生ID,判斷是否被占用 * 若未被占用,則輸入姓名,創建新學生對象,並且添加到Students中 */ private 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).getName()); i ++; } else { System.out.println("該學生ID已被占用!"); } } } /** * 通過keySet方法來遍歷Map */ private void testKeySet(){ // 通過keySet方法,獲取Map中所有的"鍵"集合 Set<String> keySet = students.keySet(); System.out.println("共獲取:" + keySet.size() + " 個學生!"); // 通過Key從Students中獲取Student對象 for(String stuId: keySet){ Student st = students.get(stuId); System.out.println("學生ID:" + st.getId() + "; 學生姓名:" + st.getName()); } } /** * 通過 entrySet方法來遍歷Map */ private void testEntrySet(){ // 通過entrySet方法,返回Map中的所有"鍵值對" Set<Map.Entry<String, Student>> entrySet = students.entrySet(); for(Map.Entry<String, Student> entry: entrySet){ System.out.println("從EntrySet中獲取鍵:" + entry.getKey()); System.out.println("從EntrySet中獲取值:" + entry.getValue().getName()); } } /** * 測試刪除Map中的元素 */ private void testRemove(){ // 提示輸入待刪除學生的ID Scanner console = new Scanner(System.in); while(true){ System.out.println("請輸入要刪除的學生ID:"); String ID = console.next(); Student st = students.get(ID); if (st == null) { System.out.println("該ID不存在!"); continue; } students.remove(ID); System.out.println("成功刪除學生:" + st.getName()); break; } } /** * 測試修改Map中的元素: replace or put 都可以實現 */ private void testModify(){ // 提示輸入待修改的學生ID Scanner console = new Scanner(System.in); while (true){ System.out.println("請輸入要修改的學生ID:"); String ID = console.next(); Student st = students.get(ID); if (st == null) { System.out.println("該學生ID不存在,請重新輸入!"); } else { System.out.println("請輸入要修改的學生姓名:"); String name = console.next(); Student newST = new Student(ID, name); students.replace(ID, newST); break; } } } public static void main(String[] args){ MapTest mt = new MapTest(); mt.testPut(); mt.testKeySet(); mt.testRemove(); mt.testEntrySet(); mt.testModify(); mt.testEntrySet(); } }

Java Map增刪改查