Map接口的实现类为HashMap,Map接口定义的集合又称为查找表,用于存储“键值对”。Key能够当作Value的索引,而每每Key是Value的一部份内容。
java
1)Key、键不能够重复,可是保存的value、值能够重复。Map接口有不少实现类,有内部为hash表实现的HashMap和内部为二叉树链表的TreeMap。一样这样的数据接口在存储数据时,不建议存储两种以上的数据类型。因此一般咱们使用Map集合时,也会使用泛型来约束存储数据的数据类型。
指针
2)建立Map进行存储时,这里要约束两个类型,一个是Key键类型,一个是Value值的类型。
code
3)HashMap集合中经常使用的方法:
对象
①V put(Key,Value): 将元素以Key-Value形式存入到集合中,当存储内容相同时,则Key相同,替换Key对应的Value值。
继承
②V get(Object Key):返回Key键对应的Value值,若是不存在,则返回null;
索引
③boolean containsKey(Object Key):判断集合中是否保存指定的Key。
接口
④boolean containsValue(Object value):判断集合中是否存在指定的value。
get
⑤若指定的Key在HashMap集合中不存在,则返回null,原则上,咱们在集合中获取元素时,首先要判断集合中是否存在该元素。以后再使用,避免空指针异常出现。Map在获取元素时有针对性,集合在获取元素须要遍历集合内容,而Map不须要,只须要给他指定的Key就能获取对应的内容。hash
Map<String,Point> map = new HashMap<String,Point>() ; map.add("san",new Point(1,2)) ; map.add("1,2",new Point(3,4)) ; Point p = map.get("san") ;: System.out.println("键="+p.getX()+"值="+p.getY()) ; //添加同Key不一样Value的对象,将Value替换 map.add("san",new Point(5,6)) ; p = map.get("san") ; System.out.println("键="+p.getX()+"值="+p.getY()) ; //查找集合中不存在Key p = map.get("si") ; System.out.println("Key="+p.getX()+"Value"=p.getY()) ;
4)遍历HashMap方式一:获取全部的key(迭代Key),并根据key获取value。从而达到遍历的效果。keySet()方法:是HashMap获取全部Key的方法。该方法能够获取Map集合中的全部key,并以Set集合的形式返回。io
Map<String,Point> map = new HashMap<String,Point>() ; map.add("yi",new Point("1,2")) ; map.add("er",new Point("3,4")) ; map.add("san",new Point("5,6")) ; //由于key在HashMap泛型中规定了类型为String,因此返回的Set类型也为String,为了更好的使用,定义set类型变量也加上泛型 Set<String> keySet = map.keySet() ; for(String str:map.keySet()){ Point p = map.get(key) ; //经过Key找到value System.out.println("key:"+p.getX()+"value:"+p.getY()) ; }
5)List,Set,Map三个接口存储元素时各自的特色:
①List。继承Collection接口,使用此接口能精确的定位到要插入的位置。用户可以经过索引来访问List集合中的元素。
有序,能够重复。
②Set。继承Collection接口,无序,不重复,元素惟一值。集合中任意两个元素都会a.equals(b) = false,Set集合中最少有一个null元素。
③Map。没有继承Collection接口,Map提供Key——value映射。