Map
Map接口:
- Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式储存的,能够实现根据key快速查找value
- Map中的键值对以Entry类型的对象实例形式存在
- 键(key)不可重复,value值可以
- 一个value可以跟很多key形成对应关系,但是一个key只能映射到一个value
- Map支持泛型,形式如:Map<K,V>
HashMap:
- HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现
- HashMap中的Entry对象是无序排列的
- Key值和value值都可以为null,但一个HashMap只能有一个key值为null的映射(key值不可重复)
Map的增删改查:
1 import java.util.*; 2 class MapDemo 3 { 4 public static void main(String[] args) 5 { 6 Map< String, Student> map = new HashMap<String,Student>(); 7 put(map); 8 //System.out.println(map.size());//其size方法返回map内部元素的数量 9 testKeySet(map); 10 11 map.remove("1");//Map接口的删除方法,根据键删除该键映射的值 12 System.out.println("删除后"); 13 testKeySet(map); 14 } 15 16 17 //Map接口的添加方法 18 public static void put(Map< String, Student> map) 19 { 20 map.put("1",new Student("1","乔布斯")); 21 map.put("2",new Student("2","比尔盖茨")); 22 23 //通过其键返回其值 24 System.out.println(map.get("1").id+":"+map.get("1").name); 25 } 26 27 //利用put方法修改Map中已有的映射 28 public static void testModify(Map<String ,Student> map,int i,Student newStudent) 29 { 30 //根据Map集合一个键只能对应一个值的特点,键不变,而值改变 31 map.put(i,newStudent); 32 } 33 34 35 //遍历Map集合(通过keySet) 36 public static void testKeySet(Map<String ,Student> map) 37 { 38 //通过keySet方法,返回Map中的所有键的Set集合 39 Set<String> keyset = map.keySet(); 40 //遍历keySet,取得每一个键,再使用get方法取得每个键对应的value 41 for (String stuId : keyset) 42 { 43 Student st = map.get(stuId); 44 System.out.println(st.id+":"+st.name); 45 } 46 } 47 48 //通过entrySet方法来编辑Map 49 public void testEntrySet(Map< String, Student>map) 50 { 51 //通过entrySet方法,返回Map中的所有键值对 52 Set<Entry< String, Student>> entrySet = map.entrySet(); 53 //通过for each 遍历entrySet 54 for(Entry<String, Student> entry : entrySet) 55 { 56 System.out.println("取得键:"+entry.getKey()); 57 System.out.println("对应的值为:"+entry.getValue().name); 58 } 59 } 60 61 62 63 } 64 65 class Student 66 { 67 String name; 68 String id; 69 Student(String id, String name) 70 { 71 this.id = id; 72 this.name = name; 73 } 74 }