Map
Map的含义
- java.util.Map接口,查找表
- Map体现的样子是一个多行两列的表格,其中左列称为key,右列称为value。map总是成对的保存数据,并且总是根据key去获取对应的value。
- 因此保存数据时我们经常将查询的条件作为key,查询的结果作为value保存到Map中方便提取数据。
- Map中的key是不允许重复的(equals判断)
- Map的常用实现类:
- java.util.HashMap:散列表,使用散列表算法实现的map,当今查询速度最快的数据结构
- TreeMap:二叉树是实现的Map
Map的方法
- V put(K k ,V v)
向当前Map中存入一组键对,如果给定的key已经存在则是替换value操作,返回值就是被替换的value, 如果不存在则返回值为null
Map<String,Integer> map = new HashMap<>();
map.put("语文", 99);
Integer value = map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 98);
map.put("物理", 98);
map.put("化学", 50);
System.out.println(map);
System.out.println("value:"+ value);
- v get(Object key)
根据给定的key获取value,如果给定的key在map中不存在则返回值为null
value = map.get("化学");
System.out.println("化学:" + value);
value = map.get("体育");
System.out.println("体育:"+value);
//获取map中的长度
int size = map.size();
System.out.println("size:"+size);
- v remove(Object key)
删除当前map中给定的key对应的键值对,返回值为该key对应的value
value = map.remove("物理");
System.out.println(map);
System.out.println(value);//被删除的物理的value
- boolean containsKey(Object key)
boolean containsValue(Object value)
判断当前map是否包含给定的key或value
boolean ck = map.containsKey("数学");
boolean cj = map.containsValue(98);
System.out.println("ck:" + ck);
System.out.println("cj:"+ cj);
Map的遍历
三种遍历方式
- 遍历所有的key
- 遍历所有的键值对
- 遍历所有的value(相对不常用)
遍历所有的key
Set keyset
该方法会将当前的Map中所有的key以一个Set集合形式返回。遍历该集合等于遍历了所有的key
//主方法
Map<String,Integer> map = new HashMap<>();
map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 97);
map.put("物理", 96);
map.put("化学", 95);
System.out.println(map);
Set<String> keyset = map.keySet();
for(String key : keyset) {
System.out.println("key:"+key);
}
遍历一组键值对
Set entryset()
将当前Map中每一组键值对以一个Set集合形式返回。集合里每一个元素是一个Entry
Entry的每一个实例用于表示个Map中的一组键值对,常用方法:getkey,getvalue
Set<Entry<String,Integer>> entrySet = map.entrySet();
for(Entry<String,Integer> e : entrySet) {
String key = e.getKey();
Integer value = e.getValue();
System.out.println(key + ":" +value);
}
遍历所有的value
Collection values()
Collection<Integer> values = map.values();
for(Integer i : values) {
System.out.println("value:" + i);
}