文章目录
Map中的元素
Map map = new HashMap();
map.put("No1","Java");
map.put("No2","php");
map.put("No3","Python");
map.put("No4","C++");
map.put("No5","Go");
map.put(null,null);
第一组:先取出所有的 key,通过key 取对应的值
使用 keySet() 把所有键取出,在取出对应的 key
Set set = map.keySet(); // 取出所有kay
第一组的两种遍历方式
// (1)增强for
System.out.println("=====第一种方式:增强for");
for (Object key : set) {
System.out.println(key + "--" + map.get(key));
}
// (2)迭代器
System.out.println("====第二种方式:迭代器");
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
System.out.println(key + "--" + map.get(key));
}
第二组:获取所有的 value
注:这种方式不能反向获取键,所有只能获取 value
使用 values 获取所有元素
Collection values = map.values(); // 使用values获取所有的值
第二组的两种遍历方式
// (1)增强for
System.out.println("====第一种方式:增强for");
for (Object val : values) {
System.out.println(val);
}
// (2)迭代器
System.out.println("====第二种方式:迭代器");
Iterator iterator1 = values.iterator();
while (iterator1.hasNext()) {
Object val = iterator1.next();
System.out.println(val);
}
第三组:通过 EntrySet 来获取K-V
这边在遍历时:我们需要用到 Map.Entry 的方法来获取k-v,因为 K-V 其实存放的类型是 HashMap$Node,EntrySet中的 K-V 是指向了 HashMap$Node 中的 K-V,所以要向下转型(Map.Entryset)
获取 EntrySet
Set set1 = map.entrySet();
第三组的两种遍历方式
// (1)增强for
System.out.println("===第一种方式:增强for");
for (Object key : set1) {
// 因为 key 其实是 HashMap$Node
// 向下转型 Map.Entry 使用方法 getKey、setValue
Map.Entry m = (Map.Entry) key;
System.out.println(m.getKey() + "--" + m.getValue());
}
// (2)迭代器
Iterator iterator2 = set1.iterator();
System.out.println("第二种方式:迭代器");
while (iterator2.hasNext()) {
Object next = iterator2.next();
Map.Entry m = (Map.Entry)next;
System.out.println(m.getKey() + "--" + m.getValue());
}