java HashMap详解及实例代码
javaHashMap
/* *Map集合的特点 *将键映射值的对象,一个映射不能包含重复的值;每个键最多只能映射到一个值 * *Map集合和Collection集合的区别? *Map集合存储元素是成对出现的,Map集合的键是唯一的,就是可重复的。可以把这个理解为:夫妻对 *Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的,可以把这个理解为:光棍 * *注意: *Map集合的数据结构值针对键有效,限值无效 *Collection集合的数据结构是针对元素有效 * *Map集合的功能概述: *1:添加功能 *Vput(Kkey,Vvalue);//添加元素 *如果键是第一次存储,就直接存储元素,返回null *如果键不是第一次存储,就用值把以前的值替换掉,返回以前的值 * *2:删除功能 *voidclear();//移除所有的键值对元素 *Vremove(Objectkey);//根据键删除键值对元素,并把值返回 * *3:判断功能 *booleancontainsKey(Objectkey);//判断集合是否包含指定的键 *booleancontainsValue(Objectvalue);//判断集合是否包含指定的值 *booleanisEmpty();//判断集合是否为空 * *4:获取功能 *set<Map,Entry<E,V>>entrySet();获取键值对的对象集合 *Vget(Objectkey);//根据键获取值 *Set<K>keySet();//获取集合中所有键的集合 *Collection<V>values();//获取集合中所有值的集合 * *5:长度功能 *intsize();//返回集合中的键值对的对数 **/
Map集合的遍历
方式1,根据键查询值
获取所有键的集合
遍历键的集合,获取每一个键
根据键,查询值
方式2,根据键值对的对象查询键和值
获取所有键值对的对象的集合
遍历键值对的对象的集合,获取到每一个键值对的对象
根据键值对的对象,查询键和值
方式1,根据键查询值
/* *Map集合的遍历,根据键查询值 * *思路: *A:获取所有的键 *B:遍历键的集合,获取得到每一个键 *C:根据键查询值 **/
importjava.util.HashMap; importjava.util.Map; importjava.util.Set; /* *Map集合的遍历,根据键查询值 * *思路: *A:获取所有的键 *B:遍历键的集合,获取得到每一个键 *C:根据键查询值 **/ publicclassIntegerDemo{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Map<String,String>map=newHashMap<String,String>(); map.put("hello","world"); map.put("java","c++"); map.put("sql","os"); System.out.println(map); //A:获取所有的键 Set<String>set=map.keySet(); //B:遍历键的集合,获取得到每一个键 for(Stringkey:set){ //C:根据键查询值 Stringvalue=map.get(key); System.out.println(key+"---"+value); } } }
方式2,根据键值对的对象查询键和值
/* *Map集合的遍历,根据对象查询键和值 * *思路: *A:获取所有的键值对对象的集合 *B:遍历键值对对象的集合,得到每一个键值对的对象 *C:获取键和值 **/
importjava.util.HashMap; importjava.util.Map; importjava.util.Set; /* *Map集合的遍历,根据对象查询键和值 * *思路: *A:获取所有的键值对对象的集合 *B:遍历键值对对象的集合,得到每一个键值对的对象 *C:获取键和值 **/ publicclassIntegerDemo{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Map<String,String>map=newHashMap<String,String>(); map.put("hello","world"); map.put("java","c++"); map.put("sql","os"); System.out.println(map); //A:获取所有的键值对对象的集合 Set<Map.Entry<String,String>>set=map.entrySet(); //B:遍历键值对对象的集合,得到每一个键值对的对象 for(Map.Entry<String,String>me:set){ //C:获取键和值 Stringkey=me.getKey(); Stringvalue=me.getValue(); System.out.println(key+"---"+value); } } }
/* *1:HashMap和Hashtable的区别? *HashMap线程不安全,效率高,允许null键和null值 *Hashtable线程安全,效率低,不允许null键和null值 * *2:List,Set,Map等接口是否都继承于Map接口? *List,Set不是继承自Map接口,它们继承自Collection接口 *Map接口本身就是一个顶层接口 **/ importjava.util.HashMap; importjava.util.Hashtable; publicclassIntegerDemo{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub HashMap<String,String>hm=newHashMap<String,String>(); Hashtable<String,String>ht=newHashtable<String,String>(); hm.put("hello","world"); hm.put("java","c++"); hm.put(null,"sql"); ht.put("hello","world"); ht.put("java","c++"); ht.put(null,"sql");//Exceptioninthread"main" //java.lang.NullPointerException } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!