Java.util接口Map
类型参数 : K - 表示此映射所维护的键 V – 表示此映射所维护的对应的值
也叫做哈希表、散列表. 常用于键值对结构的数据.其中键不能重复,值可以重复


TIPS:源码摘抄:
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
初始容量1<<4,相当于1(2^4),也就是16
static final float DEFAULT_LOAD_FACTOR = 0.75f;
默认的加载因子是0.75f,也就是存到75%开始扩容,按照2的次幂进行扩容*

学习Map接口中的方法即可
void clear() 从此映射中移除所有映射关系(可选操作) boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true
boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true
Set> entrySet() 返回此映射中包含的映射关系的 Set 视图
boolean equals(Object o) 比较指定的对象与此映射是否相等
V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
int hashCode() 返回此映射的哈希码值
boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true
Set keySet() 返回此映射中包含的键的 Set 视图
V put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)
void putAll(Map extends K,? extends V> m)从指定映射中将所有映射关系复制到此映射中(可选操作)
V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)
int size() 返回此映射中的键-值映射关系数
Collection values() 返回此映射中包含的值的 Collection 视图
package partThree;import java.util.*;
/* 本类用于测试map接口*/
public class TestMap {public static void main(String[] args) {//1.创建MAP对象Map map = new HashMap();map.put(9527,"白骨精");map.put(9528,"黑熊精");map.put(9529,"鲤鱼精");map.put(9530,"黄毛精");map.put(9531,"黑熊精");map.put(9527,"女儿国国王");System.out.println(map);/*1.map中存放的都是无序的数据,2.map中的value可以重复,比如我们放入了俩个黑熊精3.map中的key不能重复,如果重复,新的会将旧的覆盖掉*///3.进行方法测试//map.clear();//清空集合System.out.println(map.hashCode());//474360095 获取集合的哈希码System.out.println(map.equals("黄毛精"));//false 判断“黄毛怪”是否与集合对象相等System.out.println(map.isEmpty());//false 判断集合是否为空System.out.println(map.size());//5 获取集合中键值对的个数System.out.println(map.containsKey(9527));//true 判断当前map集合中是否包含指定的Key键System.out.println(map.containsValue("黑熊精"));//true 判断当前map集合中是否包含指定的ValueSystem.out.println(map.get(9527));//女儿国国王 根据key值获取到对应的value值System.out.println(map.remove(9529)); //鲤鱼精 根据此key值删除对应指定的键值对,key值(键)与Value(值)都删了System.out.println(map.containsKey(9529)); //falseSystem.out.println(map.containsValue("鲤鱼精")); //false//将map集合中的所有value取出,放入Collection集合中//Collection中Type的类型,取决于map中value的类型Collection values = map.values();System.out.println(values);//[女儿国国王, 黑熊精, 黄毛怪, 黑熊精]//4.map集合的迭代方式一/**方式一:* 遍历map中的数据,但是map本身没有迭代器,所以需要先转换成set集合* Set:把map中的所有key值存入到set集合当中--keySet()*///4.1将map集合中的key值取出存入set集合中,集合的泛型就是key的类型IntegerSet keySet = map.keySet();//4.2想要遍历集合就需要获取集合的迭代器Iterator it = keySet.iterator();//4.3循环迭代集合中的所有元素while(it.hasNext()){//判断是否有下一个元素可以迭代Integer key = it.next();//拿到本轮循环中获取到的map的keyString value = map.get(key);System.out.println("{"+key+","+value+"}");}/**方式二:* 遍历map集合,需要把map集合先转成set集合* 是把map中的一对键值对key&value作为一个Entry整体放入set* 一对K,V就是一个Entry*/Set> entrySet = map.entrySet();//获取迭代器Iterator> it2 = entrySet.iterator();while(it2.hasNext()){//判断是否有下一个元素可迭代//本轮遍历到的一个Entry对象Map.Entry entry = it2.next();Integer key = entry.getKey();//获取Entry中的keyString value = entry.getValue();//获取Entry中的valueSystem.out.println("{"+key+","+value+"}");}}
}
map转set的流程图

上一篇:2023-2-10刷题情况
下一篇:基于JAVAEE的停车场管理系统