-提供了一种映射关系,其中的元素是以键值对(Key-Value)的形式储存的,能够实现根据key快速查找value。 -键值对以Entry类型的对象实例形式存在。 -键值(key)不可重复,value可以。 -每个键值(key)最多只能映射到一个值。 -Map接口提供了分别返回key值集合,value值集合以及Entry(键值对)集合的方法 -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 { // 用了盛装学生类型 PRivate Map<String, Student> students; private Set<Course> courses; public MapTest(Map<String, Student> students) { this.students = students; } /* * 添加学生:输入ID,判断是否有学生对象, 若没有则输入姓名,创建学生对象并添加到students中 */ public void put() { Scanner scanner = new Scanner(System.in); int i = 0; while (i < 3) { System.out.println("请输入学生ID"); String id = scanner.next(); // 判断id是否被占用 Student student = students.get(id); if (student == null) { System.out.println("请输入学生姓名:"); String name = scanner.next(); Student newStudent = new Student(id, name, courses); // 向map中添加学生 students.put(id, newStudent); System.out.println("成功添加" + students.get(id).getName()); i++; } else { System.out.println("id被占用"); continue; } } } // 测试keySet public void keySet() { Set<String> key = students.keySet(); System.out.println("容量" + students.size()); for (String id : key) { Student student = students.get(id); // 判断是否为空非常必要,不然会出现空指针异常 if (student != null) { System.out.println(student.getId() + "/" + student.getName()); } } } // 测试删除Map中的映射 public void remove() { System.out.println("请输入要删除学生的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不存在,请重新输入"); continue; } else { students.remove(id); System.out.println("删除:"+student.getName()+"成功"); break; } } } // 通过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("对应值:"+entry.getValue().getName()); } } // 利用put方法修改Map中已有映射 public void testPut(){ System.out.println("请输入要修改学生的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不存在,请重新输入"); continue; } else { System.out.println("对应学生为:"+student.getName()); System.out.println("请输入新的学生名"); 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; }}请输入学生ID 1 请输入学生姓名: lc 成功添加lc 请输入学生ID 2 请输入学生姓名: shz 成功添加shz 请输入学生ID 3 请输入学生姓名: cjl 成功添加cjl 容量3 1/lc 2/shz 3/cjl 请输入要删除学生的id 1 删除:lc成功 请输入要修改学生的id 2 对应学生为:shz 请输入新的学生名 wn 修改成功 取得键:2 对应值:wn 取得键:3 对应值:cjl
新闻热点
疑难解答