获取Map中的每一个键值对
获取集合中的元素。之前只能使用,get(键) 返回值。但是如果我们要获取集合中的所有元素,键就要不断的变化
如何取得所有的键?
在返回所有键的方法中,因为时所有的键,所以返回值的类型应该是一个集合,这个集合应该是Set 因为Map 中的键要保持唯一
Set<K> keySet() //返回此地图中包含的键的Set视图。
演示:
package Collection;
import java.util.*;
//演示获取集合中的所有关系对
//keySet()
public class keySet_Map {
public static void main(String[] args){
//创建集合
Map<String,String> map = new HashMap<String,String>();
//添加元素
map.put("星期一","Mon");
map.put("星期二","Tu");
map.put("星期日","Sun");
//Map中的所有键和值
Set<String> keyset = map.keySet();//将所有的键取出
for(Iterator<String> it= keyset.iterator();it.hasNext();){
String key = it.next();
String value = map.get(key);//通过键获取值
System.out.println(key+" :: "+value);
}
//高级循环
for (String key:keyset){
String value = map.get(key);
System.out.println(key+" :: "+value);
}
}
}
//entrySet()
//获取关系,关系对应的类型是 Map.Entry 这是一个接口
Set<Map.Entry<String,String>> entryset = map.entrySet();
//在entryset 这个集合中,存储的是接口
for(Iterator<Map.Entry<String,String>> it = entryset.iterator();it.hasNext();){//迭代这个集合取出的是关系,类型为 Map.Entry
Map.Entry<String,String > entry= it.next();
String key = entry.getKey();//通过接口的方法获得键和值
String value = entry.getValue();
System.out.println(key+" :: "+value);
}
//高级循环
for(Map.Entry<String,String> me:entryset){
String key =me.getKey();
String value = me.getValue();
System.out.println(key+" :: "+value);
}
运行结果:
星期二 :: Tu
星期日 :: Sun
星期一 :: Mon
星期二 :: Tu
星期日 :: Sun
星期一 :: Mon
获取方法总结:
1.Map 是没有迭代器的。所以是不能迭代Map 这个集合的
2.获取方法一:使用 getSet() 方法,将所有的键取出来存储到一个集合中(集合为Set 类型的:见要保证惟一性),遍历存储建的集合,通过get(key) 方法获取键对应的值
3.获取方法二:使用 entrySet() 方法,取出集合中的对应关系用Set(惟一性)存储(关系的类型为 Map.Entry 这是Map 中的一个接口。)再迭代存储关系的集合,获取每一个关系,使用Map.Entry 接口的方法 getKey() getValue() 方法获取键和值。
有获取所有键的方法当然也有获取所有值的方法
Values()
//获取所有值
Collection<String > c = map.values();
for(Iterator<String> it = c.iterator();it.hasNext();){
String s = it.next();
System.out.println(s);
}
for(String s: c){
System.out.println(s);
}