------<a target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------- 接口Map为实现键映射数据结构定义了一个框架,这种结构可用于存储键值引用的对象。键值的作用与数组中的索引相同,是独一无二的值,用来存取数据结构中指定位置的数据。 接口Map定义了一种根据键值来存储和检索信息的方式。与ArrayList类似,但是不同的是Map中的键值可以是任何东西。从这个角度来说,ArrayList中的缩影可以认为是一种特殊的键值。 Map中键值对的映射关系很像现实中的儿子与父亲的对应关系,一个儿子的父亲一定是唯一的,儿子也是唯一的,但是不考虑计划生育的前提下一个父亲可以有多个儿子(此时多个键对应一个值),条条大路通罗马嘛。如下: Map<String,String> ha=new HashMap<String,String>();
ha.put("雍正","康熙");
ha.put("李世民","李渊");
ha.put("李建成", "李渊"); Map中声明了大量用于操作字典中数据 的方法。实现类必须实现所有的这些方法才能真正有用。 Map中最重要的几个方法: 插入元素:put(K key,V value):把指定的值与键相关联 移除元素:remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除 清空:clear();清空Map中的所有元素 关系数:size():返回此映射中的键-值映射关系数
Map中两种取出元素的方法: 1.通过ketSet()取出 通过keySet()方法取出的是Map存取键值对的键值。然后因为键值是唯一的,因而可以通过键值来取出Map中所有的元素。 通过键值取出所有元素的代码如下: Set set=ha.keySet();//获取Set集合
Iterator<String> ite=set.iterator();//得到Set集合的迭代器
while(ite.hasNext()){//遍历迭代器
String key=ite.next();//得到键值
String value=ha.get(key);//通过键值获取对应的值
System.out.println("键值是:"+key+"值是:"+value);//打印出相应的信息
} 运行结果是: 键值是:雍正 值是:康熙
键值是:李建成 值是:李渊
键值是:李世民 值是:李渊
过程: (1)把Map中所有键存入Set集合 (2)用迭代方式取出所有键,再通过get方法获取每个键对应的值 可见,在用ketSet()方法取出所有的值的本质在于把Map集合转化为Set集合,再通过迭代器取出。
2.通过entrySet()取出 用的方法:通过entrySet()方法返回一个集合:Set<Map.Entry<key,value>> 作用:将Map集合中的关系存入Set集合,这个关系的数据类型就是Map.Entry。 什么是Map.Entry? Map.Entry也是一个接口,它是Map接口中的一个内部接口。本质在于一个对应关系。比如说,上面的键与值是儿子与父亲的关系,那么其基本的对应关系类型就是:键是值的儿子,那么,我们的Entry也就是一个关系,就是父子关系。
用Map.Entry获取所有元素的方法: Set<Map.Entry<String, String>> entrySet=ha.entrySet();//获取集合
Iterator<Map.Entry<String, String>> it=entrySet.iterator();//获取集合对应的迭代器
while(it.hasNext()){//遍历这个迭代器中的元素
Map.Entry<String,String> en= it.next();//获取对应的元素
String key=en.getKey();//获取键值
String value=en.getValue();//获取键值对应的值
System.out.println("键值是:"+key+" 值是:"+value);//打印相应的信息
} 打印的结果是: 键值是:雍正 值是:康熙
键值是:李建成 值是:李渊
键值是:李世民 值是:李渊 通过entrySet()方法与使用keySet()方法的步骤与原理相似,都是通过把Map集合转化为Set集合再调用Set集合的迭代器而得到相应的值,但不同的是,entrySet()得到的是对应关系的集合,而不是键值的集合。
|