Map
1. java.util.Map接口 称为:查找表
* Map是java中一种常用的数据结构,体现的是一个多行两列的表格。
* 其中左列称为key,又列称为value。
* Map总是根据key获取对应的value。
* Map是java集合框架(Java Collection FrameWork)的一员。
* 但是Map不是集合,它与Collection不存在继承关系。
* 常用的实现类:
* java.util.HashMap:散列表,哈希表。最常用的Map实现类
* 特点:当今查询速度最快的数据结构
* java.util.TreeMap:使用二叉树实现的Map
public class MapDemo {
public static void main(String[] args) {
//HashMap内部存放顺序与put顺序不一致
Map
//内部维护一个链表来记录put顺序,以便我们遍历时按照put顺序进行
// Map
/*
V put(K k,V v)
将一组键值对存入Map中。
Map有一个要求:key不允许重复(equals比较)
如果使用重复的key保存value则是替换value操作,此时方法返回值为被替换的
value。没有替换时返回值为null。
*/
Integer value = map.put("语文",99);
System.out.println(value);//没有任何替换的value,返回值为null
map.put("数学",98);
map.put("英语",97);
map.put("物理",96);
map.put("化学",99);
System.out.println(map);
value = map.put("数学",88);
System.out.println(value);//数学原来的98被替换了。
System.out.println(map);
/*
V get(Object key)
根据给定的key获取对应的value。
如果给定的key在map中不存在,则返回值为null。
*/
value = map.get("英语");
System.out.println("英语:"+value);
value = map.get("体育");
System.out.println("体育:"+value);
/*
int size()
返回当前Map中的元素个数。每一组键值对为1个元素。
*/
int size = map.size();
System.out.println("size:"+size);
/*
boolean containsKey(Object key)
判断当前Map是否包含给定的key
boolean containsValue(Object value)
判断当前Map是否包含给定的value
*/
boolean ck = map.containsKey("语文");
System.out.println("是否包含key[语文]:"+ck);
ck = map.containsKey("体育");
System.out.println("是否包含key[体育]:"+ck);
boolean cv = map.containsValue(99);
System.out.println("是否包含value[99]:"+cv);
cv = map.containsValue(55);
System.out.println("是否包含value[55]:"+cv);
/*
V remove(Object key)
删除当前Map中给定的key所对应的键值对。返回值为这个key对应的value
*/
value = map.remove("数学");
System.out.println(map);
System.out.println(value);
}
}
2. Map的遍历
* Map提供了三种遍历方式:
* 1:遍历所有的key
* 2:遍历每一组键值对
* 3:遍历所有的value(相对不常用)
public class MapDemo2 {
public static void main(String[] args) {
Map
map.put("语文",99);
map.put("数学",98);
map.put("英语",97);
map.put("物理",96);
map.put("化学",99);
System.out.println(map);
/*
遍历所有的key
Set
将当前Map中所有的key以一个Set集合形式返回。
*/
Set
for(String key : keySet){
System.out.println("key:"+key);
}
/*
遍历每一组键值对
Set
将当前Map中每一组键值对以一个Entry实例表示并最终以Set集合返回所有键值对
Map.Entry它的每一个实例用于表示Map中的一组键值对
Entry上有两个常用方法:
K getKey()
V getValue()
*/
Set
for(Map.Entry
String key = e.getKey();
Integer value = e.getValue();
System.out.println(key+":"+value);
}
/*
遍历所有的value
Collection values()
将当前Map中所有的value以一个集合形式返回
*/
Collection
for(Integer value : values){
System.out.println("value:"+value);
}
/*
Map也支持forEach方法。
*/
map.forEach((k,v)-> System.out.println(k+":"+v));
}
}