1.定义
Map用于保存存在映射关系<key,value>的数据.其中,key值不能重复(使用equals()方法比较),value值可以重复
2.方法
V put(key,value):添加元素
V get(Object key):获取指定key的元素
Set<k> keySet():返回指定对象key的集合
Collection values():返回指定对象value的集合
V remove(Object key):移除指定key的元素,并且返回对应值的引用
Set<Map.Entry<k,v>> entrySet():返回映射中包含映射关系的视图
注:Map接口没有继承Iterable接口,所以不能直接通过map.iterator进行遍历(List,Map拥有该接口,可以直接遍历),需要先转化为set类型,使用entrySet()方法,Map.Entry<k,v>中含有方法getKey()和getValue(),获取对应的键和值。
3.常用实现类
HashMap:和HashSet类似,键按键的HashCode()方法确定存储位置,无序
TreeMap:用于对键进行排序,方式与TreeSet相同
LinkedHashMap:和LinkedHashSet类似
4.实例
1 import static org.junit.Assert.*; 2 import java.util.Collection; 3 import java.util.HashMap; 4 import java.util.Map; 5 import java.util.Map.Entry; 6 import java.util.Set; 7 import org.junit.Test; 8 import day8.Customer; 9 10 11 public class TestMap { 12 @Test 13 public void testMapMethods(){ 14 Map m1=new HashMap(); 15 //put(key,value)添加元素 16 m1.put("aa", new Customer(1,"AA")); 17 m1.put("bb", new Customer(2,"BB")); 18 m1.put("cc", new Customer(3,"CC")); 19 m1.put("dd", new Customer(4,"DD")); 20 System.out.println(m1.size()); 21 Map m2=new HashMap(); 22 m2.put("aa", new Customer(1,"AA")); 23 m2.put("bb", new Customer(2,"BB")); 24 m2.put("cc", new Customer(3,"CC")); 25 m2.put("dd", new Customer(4,"DD")); 26 Map<String,Object> m3=new HashMap(); 27 m3.put("aa", new Customer(1,"AA")); 28 m3.put("bb", new Customer(2,"BB")); 29 m3.put("cc", new Customer(3,"CC")); 30 m3.put("dd", new Customer(4,"DD")); 31 //比较两对象是否相等时,重写Object的equals()方法,如果键值对完全相同,返回true. 32 System.out.println(m1.equals(m2)); 33 //get(Object key)获取指定key的元素 34 System.out.println(m1.get("bb")); 35 //keySet()返回指定对象key的集合 36 37 //增强for循环遍历操作 38 Set keySet=m1.keySet(); 39 for(Object key:keySet){ 40 System.out.println(key); 41 } 42 //values()返回指定对象value的集合 43 Collection value=m1.values(); 44 for(Object val:value){ 45 System.out.println(val); 46 } 47 System.out.println(); 48 //遍历操作 49 //方法一:先得到键的集合,对键进行遍历时得到值 50 for(Object key:keySet){ 51 Object val=m1.get(key); 52 System.out.println(key+" : "+val); 53 } 54 System.out.println(); 55 //方法二:得到键值对的集合 56 for(Entry<String,Object> entry:m3.entrySet()){ 57 System.out.println(entry.getKey()+" : "+entry.getValue()); 58 } 59 System.out.println(); 60 //remove(Object key)移除指定key的元素,并且返回对应值的引用 61 Object obj=m1.remove("aa"); 62 System.out.println(obj); 63 System.out.println(m1.size()); 64 } 65 }