java.util.Map 查找表
Map体现的结构是一个多行两列的表格。其中左列称为key,右列称为value
Map总是根据key获取对应的value
Map中的key不允许重复(equals判定)
Map是一个接口,常用的实现类:
java.util.HashMap:散列表,哈希表。
散列表是当今查询速度最快的数据结构,被大量应用于缓存服务器中。
public class MapDemo1 {
public static void main(String[] args) {
Map<String,Integer> map=new HashMap<>();
/**
* V put(K k,V v)
* 向Map中存入一组键值对
* 由于Map要求key不允许重复,如果使用重复的key则为替换value操作,此时
* 方法返回值为被替换的value,否则返回值为null.
*/
//如果Map的value是包装类,获取value时要用包装类,避免因为自动拆箱导致空指针!
Integer value = map.put("语文", 99);
System.out.println(value);
map.put("数学",98);
map.put("英语",97);
map.put("物理",96);
map.put("化学",99);
System.out.println(map);
value = map.put("语文", 80);
System.out.println(map);
System.out.println(value);
/**
* V get(Object key)
* 根据key获取对应的value值
*/
value=map.get("数学");
System.out.println("数学:"+value);
value=map.get("体育");
System.out.println("体育:"+value);
/**
* V remove(Object key)
* 根据key删除对应的键值对,返回值为这个key对应的value
*/
value = map.remove("英语");
System.out.println(map);
System.out.println(value);
int size = map.size();//获取Map中的元素个数(一组键值对算一个元素)
System.out.println(size);
boolean ck = map.containsKey("数学");
System.out.println(ck);
boolean cv = map.containsKey(96);
System.out.println("包含value:"+cv);
map.clear();//清空map
System.out.println(map);
public class MapDemo2 {
public static void main(String[] args) {
Map<String,Integer> map=new HashMap<>();
map.put("数学",98);
map.put("英语",97);
map.put("物理",96);
map.put("化学",99);
System.out.println(map);
//遍历所有的key
/**
* Set keySet()
* 将当前Map所有的key以一个Set集合形式返回。遍历该集合元素就等同于
* 遍历当前Map中所有的key.
*/
Set<String> keySet = map.keySet();
for (String key:keySet){
System.out.println("key:"+key);
}
/**
* Set entrySet()
* 将当前Map中所有的键值对以一个Set集合形式返回。
* 每一组键值对以一个Entry实例形式表示。
* Entry有两个常用方法:getKey()和getValue()用于获取其表示的
* 键值对中的key和value
*/
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for (Map.Entry<String,Integer> e:entrySet){
String key = e.getKey();
Integer value = e.getValue();
System.out.println(key+":"+value);
}
/*
Collection values()
当前Map中所有的value以一个集合形式返回
*/
Collection<Integer> values = map.values();
for (Integer value:values){
System.out.println("values:"+value);
}
Collection<String> c=new ArrayList<>();
c.add("one");
c.add("two");
c.add("three");
c.add("four");
//新循环遍历
for(String s:c){
System.out.println(s);
}
/*
JDK8之后,集合和Map都提供了forEach方法,基于lambda表达式遍历
*/
c.forEach(e-> System.out.println(e));
//Map也支持forEach方法
map.forEach((k,v)-> System.out.println(k+":"+v));
}
}
//方式1
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
//方式2
import java.util.Map.Entry;
Set<Entry<String, Integer>> entrySet = map.entrySet();
