APIDay03🐇
1.查询表Map接口
-
java提供了一组可以以键值对(key-value)的形式存储数据的数据结构,这种数据结构成为Map。我们可以把Map看成一个多行两列的表格,其中第一列存放key,第二列存放value。
-
而每一行就相当于一组key-value对,表示一组数据。
-
Map对存入的元素有一个要求,就是key不能重复,所谓不能重复指的是在Map中不能包含两个equals为true的key。
1.1Map<String,Integer> map=new HashMap<String,Integer> ();
map.put(“语文”,99); 将给定的key-value存入到Map中。
num=map.get(“物理”); 给定Key获取对应的Value
package LittleRabbit.Map;
import java.util.HashMap;
import java.util.Map;
/**
* java.util.map
* Map查找表
* 常用实现类:HashMap散列表(散列算法实现)
* @author rabbit
*/
public class Map_Put_Get {
public static void main(String[] args) {
//Map需要指定两个泛型,分别指定Key与value的类型
Map<String,Integer> map = new HashMap<>();
/**
Map要求key不允许重复(equals比较)
V put(K k,V v)
将给定的key-value对存入到map中
若key在map中已经存在了,则是替换value
若key不存在,则返回值为NULL
*/
map.put("语文",99);
map.put("数学",99);
map.put("英语",99);
map.put("物理",99);
/**
* 获取put返回值是,若返回值为包装类类型
* 注意不要用基本类型接收数据,避免自动拆箱引起的空指针异常
* int n = map.put("化学",99);
* 因为若“化学”作为key在map中不存在,put返回值为null那么对其拆箱会引发空指针异常
*/
Integer n = map.put("化学",99);
System.out.println(map);
System.out.println(n);//null
//重复的key是替换value操作
n = map.put("语文",88);
System.out.println(map);
System.out.println(n);
/**
V get(K k)
根据给定的key获取对应的value
若给定的key不存在,则返回值为null
*/
n = map.get("数学");
System.out.println("数学"+n);
n= map.get("语文");
System.out.println("语文"+n);
n= map.get("体育");
System.out.println("体育"+n);
}
}
2).遍历Map
①遍历所有的key
Set keySet=map.keySet();
for(String key:keySet){System.out.println(“key:”+key);}
②遍历所有的键值对
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=map.values();
for(Integer value:values){
System.out.println(“value:”+value);}
package LittleRabbit.Map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* 遍历Map
* 遍历Map有三种方式
* 1.遍历所有的key Set<String> set = map.keySet();
* 2.遍历每一组键值对 Set<Map.Entry<String ,Integer>> entrySet = map.entrySet();
* 3.遍历所有的value(不常用) Collection <Integer> value = map.values();
*/
public class Map_Demo {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<>();
map.put("语文",99);
map.put("数学",93);
map.put("英语",97);
map.put("地理",97);
/**
遍历所有的key
Set<K> keySet()
将当前Map中所有的key存入一个Set集合后返回
遍历该集合就等于遍历了Map中所有的key
*/
Set<String> set = map.keySet();
for(String key : set) {
System.out.println("key:"+key);
}
/*
遍历每一组键值对
Map中每一组键值对由Map的内部类Entry的一个实例保存
Set<Entry> entrySet();
该方法会将当前Map中每组键值对(若干的Entry实例)存入一个Set集合后返回
*/
Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
System.out.println(entrySet);
for (Map.Entry<String,Integer> e: entrySet){
String key = e.getKey();
Integer value = e.getValue();
System.out.println(key+"="+value);
}
/*
Collection<V> values()
该方法会返回当前Map中所有的value
*/
Collection<Integer> value = map.values();
for (Integer it : value){
System.out.println("Value:"+it);
}
}
}
3)查看Map是否包含给定内容
boolean contains=map.containsKey(“化学”);
boolean contains=map.containsValue(70);
//判断map是否包含给给定元素
public class Map_Contains {
public static void main(String[] args) {
Map<String,Integer> map = new HashMa