黑马程序员技术交流社区
标题: map [打印本页]
作者: kkkkkccccc 时间: 2015-7-31 00:09
标题: map
Map
是双列集合,存的是键值对(最大优点就是体现对应关系),键(key)是唯一的,值(value)可以重复.
Map的功能
A:增加功能
V Put(k key, v value) 返回的值是根据键找到的.
当key在集合中不存在时,返回null,然后添加元素;
当key在集合中存在的时候,替换元素(把替换前的值返回给你)。
B:删除功能
Void clear(): 清除所有键值对数据(一般不建议)
Remove(key k) 根据指定的键删除键值对,返回删除的值,如果键不存在返回null
C:判断功能
Boolean containsKey(Object ky) 判断指定的键是否在集合中存在
Boolean containsValue( Object value )判断指定的值是否在集合中存在。
Boolean isEmpty() 判断集合是否为空。
D:获取功能
Set<Map.Entry<K,V>> entrySet() 键值对对象的集合。
Object get( Object key ): 根据键获取值。
Set<K> keySet(): 所有键的集合
Collection<V> values() 所有值的集合(因为值可以重复,可以是list,可以是 set)。
E:长度功能
int size()
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps86BD.tmp.jpg
Map的两种遍历方式(必须掌握)
遍历方式一:通过丈夫找妻子(先拿到键的集合,然后遍历键的集合拿到值,这样就是遍历 了map)
a:把所有丈夫给集合起来。Set<K> ketSet()
b:遍历丈夫集合,获取到每一个丈夫。增强for , 迭代器
c:让丈夫去找妻子。get(Object key)
// 创建集合对象
Map<String, String> map = new HashMap<String, String>();
// 往集合里边添加元素
map.put("郭靖", "黄蓉");
map.put("杨过", "小龙女");
map.put("牛郎", "侄女");
map.put("萧炎", "萧薰儿");
// 方式1 遍历,"丈夫找妻子"
// 1)得到所有的丈夫对象(Set<k> keySet())
Set<String> husbandSet = map.keySet();
//2)遍历丈夫集合,获取到每一个丈夫。迭代器,增强for
// 用迭代器的方式来做
Iterator it = husbandSet.iterator();
while(it.hasNext())
{
String husband = (String)it.next();
String wife = map.get(husband);
System.out.println(husband +"-----"+ wife);
}
// 用增强for来做
for (String s : husbandSet) {
//3) 根据“丈夫”找到“妻子”--根据键获取值
String wife = map.get(s);
System.out.println(s + "******" + wife);
}
遍历方式二:
Map.entry()在内存中其实拿到的是键和值整体对象的地址值.
a:获取所有结婚证的集合。Set<结婚证> entrySet()
b:遍历结婚证集合,获取到每一个结婚证对象。迭代器,增强for
c:通过结婚证对象获取丈夫和妻子getKey()和getValue()
// 创建集合对象
Map<String, String> map = new HashMap<String, String>();
// 往集合里边添加元素
map.put("郭靖", "黄蓉");
map.put("杨过", "小龙女");
map.put("牛郎", "侄女");
map.put("萧炎", "萧薰儿");
// 找到所有的“结婚证”,也就是所有的键值对
Set<Map.Entry<String, String>> set = map.entrySet();
// 方式2 遍历,这样每次遍历我都会得到一个键值对
for (Map.Entry<String, String> en : set) {
// 得到键和值,然后打印
String key = en.getKey();
String value = en.getValue();
System.out.println(key + "****" + value);
}
有兴趣可了解entry() 的拓展
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |