——- android培训、java培训、期待与您交流! ———-
如何取出所有键值呢?
一、查阅API:
Set keySet()
返回此映射中所包含的键的 Set 视图。
1.1 思路:
1 将所有的键存入Set
2 Set集构造迭代器
3 迭代取出所有的键,并用get方法获取对于的值
1.2 原理:Map映射转换成Set集合,利用Set的迭代器。
这就是取出所有键值的方式一。
二、查阅API
2.1 Map方法
Set<Map.Entry<K,V>> entrySet()
返回此映射所包含的映射关系的 Set 视图。
2.2 接口 Map<K,V>
嵌套类摘要
static interface Map.Entry<K,V>
映射项(键-值对)。
2.3 接口 Map.Entry<K,V>
正在封闭接口:
Map<K,V>
映射项(键-值对)。Map.entrySet 方法返回映射的 collection 视图,其中的元素属于此类。
获得映射项引用的唯一 方法是通过此 collection 视图的迭代器来实现。
这些 Map.Entry 对象仅 在迭代期间有效。
2.4 Map.Entry<K,V>
方法摘要
boolean equals(Object o)
比较指定对象与此项的相等性。
K getKey()
返回与此项对应的键。
V getValue()
返回与此项对应的值。
int hashCode()
返回此映射项的哈希码值。
V setValue(V value)
用指定的值替换与此项对应的值(可选操作)。
2.5 Map.Entry原理
Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。
interface Map
{
public static interface Entry
{
public abstract Object getKey();
public abstract Object getValue();
}
}
class HashMap implements Map
{
class Hahs implements Map.Entry
{
public Object getKey(){}
public Object getValue(){}
}
}
思路和原理都与方式一一样!
1 Map把所有的键值映射关系存入Set<Map.Entry<String,String>>
2 在Set中调用迭代器
3 取出键值映射关系
4 取出键和值
三 源代码
import java.util.*;
public class MapDemo2
{
public static void main(String[] args)
{
sop("方式一取出所有键值");
getWay_1();
sop("方式二取出所有键值");
getWay_2();
}
//方式一取出所有键值
public static void getWay_1()
{
//创建map子类对象hashmap
Map<String,String> map = new HashMap<String,String>();
//添加键值对
map.put("id001","Jack");
map.put("id004","Tom");
map.put("id002","Jane");
map.put("id003","Jimmy");
//打印原映射
sop("原映射"+map);
//1 把所有的键存入Set
Set<String> keySet = map.keySet();
//打印keySet
sop("键集合:"+keySet);
//2 调用迭代器
for(Iterator<String> it = keySet.iterator(); it.hasNext(); )
{
//3 迭代取出键并获取键对应值
String key = it.next();
String value = map.get(key);
sop("键:"+key+"对应值为:"+value);
}
}
//方式二取出键值
public static void getWay_2()
{
//创建Map子类对象
Map<String,String> map = new HashMap<String,String>();
//添加键值对
map.put("id001","Jack");
map.put("id004","Tom");
map.put("id002","Jane");
map.put("id003","Jimmy");
//打印原映射
sop("原映射"+map);
//1 Map把所有的键值映射关系存入Set
Set<Map.Entry<String,String>> entry = map.entrySet();
//2 获取迭代器
for(Iterator<Map.Entry<String,String>> it = entry.iterator(); it.hasNext(); )
{
//3 取出键值映射关系
Map.Entry<String,String> me = it.next();
//4 取出键和值
String key = me.getKey();
String value = me.getValue();
//5 打印
sop("key="+key+",对应value="+value);
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
方式一取出所有键值:
方式二取出所有键值:
第二种方式总结:
Set<Map.Entry<k,v>> entrySet
:
将map集合中的映射关系存入到了set集合中,
而这个关系的数据类型就是:Map.Entry
Entry其实就是Map中的一个static内部接口。
为什么要定义在内部呢?
因为只有有了Map集合,有了键值对,才会有键值的映射关系。
关系属于Map集合中的一个内部事物。
而且该事物在直接访问Map集合中的元素。