表示 key 到 value 的一种对应关系。key不允许重复,Value无要求。
Map 没有继承Collection,和Collection是同等级的
没有继承Collection,那就不能使用迭代器的方式遍历。
遍历方式四种如下:(后边代码一键粘贴式)
Map<String, Integer> map = new TreeMap<>();
// map 里放入了一些内容
// Map.Entry 语法 Map 下的内部接口 Entry
// 含义是一组键值对(key-value pair),又称为记录(entry)
// <String, Integer>: 键值对中的 key 的类型是 String,value 的类型是 Integer
// map.entrySet() 得到 Set<Map.Entry<String, Integer>>
// 即 map 中所有的键值对
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
}
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
//第一种:普遍使用,二次取值
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//第二种
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第三种:推荐,尤其是容量大时
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第四种
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}
Map中的方法:
put(K key,V value) | 不存在则插入,返回null; 存在则更新,返回原来的value |
get(K key) | 根据key,找到对应的value,找不到返回null |
getOrDefault(K key,V defaultValue) | 根据key找value,找不到返回defaultValue |
Set<K> keySet() | 返回所有的key |
Collection<V> values() | 返回所有的value |
Set< Map.Entry<K,V> > entrySet() | 返回所有的key-value键值对 |
int size() | |
boolean isEmpty() | |
void clear() | |
boolean remove(K key) | |
boolean remove(K key,V value) | |
boolean containsKey(K key) | |
boolean containsValue(V value) |
Map.Entry<K,V>的
常见方法
-
Map.Entry<K,V> 重命名
map下的entry方法。
Map.Entry是Map中的一个接口,他的用途是表示一个映射项(里边有Key和Value),就是表示一个键值对。
K getKey() | 获取键值对中的key |
V getValue() | 获取键值对中得到value |
V setValue(V value) | 更新键值对中的value并返回旧的value |