1、简单介绍
首先介绍map,map是用于存储键值对(<key,value>)的集合类,也可以说是一组键值对的映射。这有点像数据库里的关系表,key是主键,value是主键的值,只是这里只有一个值。
在java中map是一个接口,HashMap基于哈希表来实现Map接口
2、数据结构
我理解的HashMap的样子是这样的:
key | value |
---|---|
key1 | value1 |
key2 | value2 |
… | … |
key和value是成对存在的,例如key1与value1是一对entry。并且没有重复的key值,它是无序的、唯一的。
3、主要特点
- key是无序的、唯一的(加入假如重复的key,则做覆盖处理)
- 1个 key 只能对应1个 value, 1个 value 可以对应多个 key
- key,value 都可以是任何引用类型(包括 null)的数据(只能是引用类型)
4、构造方法
构造方法有四个:
HashMap()
//构造一个空的 HashMap ,默认初始容量(16)和默认负载系数(0.75)。
HashMap(int initialCapacity)
//构造一个空的 HashMap具有指定的初始容量和默认负载因子(0.75)。
HashMap(int initialCapacity, float loadFactor)
//构造一个空的 HashMap具有指定的初始容量和负载因子。
HashMap(Map<? extends K,? extends V> m)
//构造一个新的 HashMap与指定的相同的映射 Map 。
5、常用方法
clear()//从这张地图中删除所有的映射,无返回值
containsKey(Object key) //如果此映射包含指定键的映射,则返回 true
containsValue(Object value)//如果此地图将一个或多个键映射到指定值,则返回 true
get(Object key)//返回到指定键所映射的值,或 null如果此映射包含该键的映射。
isEmpty() //如果此地图不包含键值映射,则返回 true
put(K key, V value)//将指定的值与此映射中的指定键相关联
remove(Object key) //从该地图中删除指定键的映射(如果存在)
remove(Object key, Object value)//仅当指定的密钥当前映射到指定的值时删除该条目
size() //返回此地图中键值映射的数量
6、遍历方法
4种遍历方法:
- 采用keySet()+for循环的方法来遍历,keySet()返回的是一个Key值的集合
Map<String,String> map=new HashMap<String,String>();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
for(String key:map.keySet()){
system.out.println("key:"+key);
system.out.println("value:"+map.get(key));
}
-
采用EntrySet()+Iterator进行遍历,EntrySet()返回的是一个Map.Entry的一个集合,它提供getKey(),getValue()方法来获取键值对。
Iterator< Map.Entry<String,String>> it=map.EntrySet().iterator(); while(it.hasNext()){ Map.Entry<String,String> entry=it.next(); system.out.println("key:"+entry.getKey()); system.out.println("value:"+entry.getValue()); }
- 直接采用EntrySet+for增强进行遍历
for(Map.Entry<String,String> entry:map.entrySet()){ system.out.println("key:"+entry.getKey()); system.out.println("value:"+entry.getValue()); }
-
取出所有value的值,但是不能取出KEY值
for(String value:map.values()){ <pre name="code" class="html"> system.out.println("value:"+value);
更多专业内容参考网址: