概述:严格来说,Map并不是集合,而是两个集合之间的映射关系(Map接口并没有继承与Collection接口),然而因为Map可以存储数据(每次存储都应该存储A集合中的一个元素(key),B集合中的一个元素(value),习惯的还是把Map称之为集合
其中key集合是一个Set集合,因为key值不能重复,而value集合是一个List集合,元素可以重复
并且把key-value这一键值对称之为Entry
因为Map接口并没有直接继承与Collection接口也没有继承与Iterable接口,所以不能直接对Map使用for-each操作,但是可以分别对key和value集合使用for-each操作
package com.map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class HaspMapDemo {
public static void main(String[] args) {
Map<String,Object> map = new HashMap<String, Object>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
map.put("key4", "value4");
map.put("key5", "value5");
//System.out.println(map);
//map.clear();
System.out.println(map);
System.out.println(map.containsKey("key1"));
System.out.println(map.containsValue("value2"));
System.out.println(map.get("key1"));
System.out.println(map.keySet());
System.out.println("-----------------------------");
//使用for-each获取map中的key集合
Set<String> keys = map.keySet();
for(String key:keys){
System.out.println(key+"---"+map.get(key));
}
System.out.println("-----------------------------");
//使用for-each获取map中的value集合
Collection<Object> values = map.values();
for(Object ele:values){
System.out.println(ele);
}
System.out.println("-----------------------------");
//获取map中的Entry:key-value集合
Set<Map.Entry<String, Object>> entrys = map.entrySet();
//使用for-each获取key-value
for(Map.Entry<String, Object> entry:entrys){
String key = entry.getKey();
Object value = entry.getValue();
System.out.println(entry);
System.out.println(key+"-"+value);
}
}
}
{key1=value1, key2=value2, key5=value5, key3=value3, key4=value4}
true
true
value1
[key1, key2, key5, key3, key4]
-----------------------------
key1---value1
key2---value2
key5---value5
key3---value3
key4---value4
-----------------------------
value1
value2
value5
value3
value4
-----------------------------
key1=value1
key1-value1
key2=value2
key2-value2
key5=value5
key5-value5
key3=value3
key3-value3
key4=value4
key4-value4