-提供了一種映射關(guān)系,其中的元素是以鍵值對(duì)(Key-Value)的形式儲(chǔ)存的,能夠?qū)崿F(xiàn)根據(jù)key快速查找value。 -鍵值對(duì)以Entry類型的對(duì)象實(shí)例形式存在。 -鍵值(key)不可重復(fù),value可以。 -每個(gè)鍵值(key)最多只能映射到一個(gè)值。 -Map接口提供了分別返回key值集合,value值集合以及Entry(鍵值對(duì))集合的方法 -Map支持泛型,形如:Map
import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import java.util.Scanner;import java.util.Set;public class MapTest { // 用了盛裝學(xué)生類型 PRivate Map<String, Student> students; private Set<Course> courses; public MapTest(Map<String, Student> students) { this.students = students; } /* * 添加學(xué)生:輸入ID,判斷是否有學(xué)生對(duì)象, 若沒(méi)有則輸入姓名,創(chuàng)建學(xué)生對(duì)象并添加到students中 */ public void put() { Scanner scanner = new Scanner(System.in); int i = 0; while (i < 3) { System.out.println("請(qǐng)輸入學(xué)生ID"); String id = scanner.next(); // 判斷id是否被占用 Student student = students.get(id); if (student == null) { System.out.println("請(qǐng)輸入學(xué)生姓名:"); String name = scanner.next(); Student newStudent = new Student(id, name, courses); // 向map中添加學(xué)生 students.put(id, newStudent); System.out.println("成功添加" + students.get(id).getName()); i++; } else { System.out.println("id被占用"); continue; } } } // 測(cè)試keySet public void keySet() { Set<String> key = students.keySet(); System.out.println("容量" + students.size()); for (String id : key) { Student student = students.get(id); // 判斷是否為空非常必要,不然會(huì)出現(xiàn)空指針異常 if (student != null) { System.out.println(student.getId() + "/" + student.getName()); } } } // 測(cè)試刪除Map中的映射 public void remove() { System.out.println("請(qǐng)輸入要?jiǎng)h除學(xué)生的id"); Scanner scanner = new Scanner(System.in); while(true){ String id = scanner.next(); Student student = students.get(id); if (student == null) { System.out.println("輸入的id不存在,請(qǐng)重新輸入"); continue; } else { students.remove(id); System.out.println("刪除:"+student.getName()+"成功"); break; } } } // 通過(guò)entrySet遍歷Map public void entrySet(){ Set<Entry<String, Student>> entrySet = students.entrySet(); for (Entry<String, Student> entry : entrySet) { System.out.println("取得鍵:"+entry.getKey()); System.out.println("對(duì)應(yīng)值:"+entry.getValue().getName()); } } // 利用put方法修改Map中已有映射 public void testPut(){ System.out.println("請(qǐng)輸入要修改學(xué)生的id"); Scanner scanner = new Scanner(System.in); while(true){ String id = scanner.next(); Student student = students.get(id); if (student == null) { System.out.println("輸入的id不存在,請(qǐng)重新輸入"); continue; } else { System.out.println("對(duì)應(yīng)學(xué)生為:"+student.getName()); System.out.println("請(qǐng)輸入新的學(xué)生名"); String name = scanner.next(); Student newStudent = new Student(id,name, courses); students.put(id, newStudent); System.out.println("修改成功"); break; } } } public static void main(String[] args) { Map<String, Student> students = new HashMap<String, Student>(); MapTest mapTest = new MapTest(students); mapTest.put(); mapTest.keySet(); mapTest.remove(); mapTest.testPut(); mapTest.entrySet(); } public Map<String, Student> getStudents() { return students; } public void setStudents(Map<String, Student> students) { this.students = students; }}請(qǐng)輸入學(xué)生ID 1 請(qǐng)輸入學(xué)生姓名: lc 成功添加lc 請(qǐng)輸入學(xué)生ID 2 請(qǐng)輸入學(xué)生姓名: shz 成功添加shz 請(qǐng)輸入學(xué)生ID 3 請(qǐng)輸入學(xué)生姓名: cjl 成功添加cjl 容量3 1/lc 2/shz 3/cjl 請(qǐng)輸入要?jiǎng)h除學(xué)生的id 1 刪除:lc成功 請(qǐng)輸入要修改學(xué)生的id 2 對(duì)應(yīng)學(xué)生為:shz 請(qǐng)輸入新的學(xué)生名 wn 修改成功 取得鍵:2 對(duì)應(yīng)值:wn 取得鍵:3 對(duì)應(yīng)值:cjl
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注