Map相关知识点

在这里插入图片描述

  • E:Element元素,是指代保存到集合中的数据对象,Element/E本身不是一个Java类,只是具有指代意义的一个单词

  • K:Key键值对的键,指代保存到集合中的键元素

  • V:Value键值对的值,指代保存到集合中的值元素

  • T:Type类型,指代某个数据类型

    Map中保存的数据是成对出现的,元素以对(两个)为单位保存在Map集合中,一对元素对应的关系是key-value,在Map集合中,这对元素首先封装成Map.Entry对象,再将Map.Entry对象保存到Map集合中。

Map的常用子类:

  1. Map 是映射接口,Map中存储的内容是键值对(key-value)。
  2. AbstractMap 是继承于Map的抽象类,它实现了Map中的大部分API。其它Map的实现类可以通过继承AbstractMap来减少重复编码。
  3. SortedMap 是继承于Map的接口。SortedMap中的内容是排序的键值对,排序的方法是通过比较器(Comparator)。
  4. NavigableMap 是继承于SortedMap的接口。相比于SortedMap,NavigableMap有一系列的导航方法;如"获取大于/等于某对象的键值对"、“获取小于/等于某对象的键值对”等等。
  5. TreeMap 继承于AbstractMap,且实现了NavigableMap接口;因此,TreeMap中的内容是“有序的键值对”!
  6. HashMap 继承于AbstractMap,但没实现NavigableMap接口;因此,HashMap的内容是**“键值对,但不保证次序”**!
  7. Hashtable 虽然不是继承于AbstractMap,但它继承于Dictionary(Dictionary也是键值对的接口),而且也实现Map接口;因此,Hashtable的内容也是**“键值对,也不保证次序”**。但和HashMap相比,Hashtable是线程安全的,而且它支持通过Enumeration去遍历。
  8. WeakHashMap 继承于AbstractMap。它和HashMap的键类型不同,WeakHashMap的键是“弱键”

常用方法:

  1. public void clear() 清空Map集合
  2. public boolean containsKey(Object key) 判断集合中是否存在key值
  3. public boolean conatinsValue(Object value) 判断集合中是否存在value值
  4. public Set<Map.Entry> entrySet() 取出Map集合中的Entry,转换成Set集合
  5. public boolean equals(Object o) 判断两个集合是否相等
  6. public V get(Object key) 根据key值获取对应的value
  7. public int hashCode() 返回哈希值
  8. public boolean isEmpty() 判断集合是否为空
  9. public Set keySet() 返回集合中的所有key值,封装到一个Set集合中
  10. public Collection values() 返回集合中的所有value值,封装到一个Collection集合中
  11. public void putAll(Map m) 想集合中添加另外一个集合的所有元素
  12. public V put(K key, V value) 向集合中添加元素(成对 key-value)
  13. public V remove(Object key) 删除集合中的key,以及对应的value
  14. public int size() 返回集合的长度

Map的定义如下:

public interface Map<K,V> { }

  1. Map 是一个键值对(key-value)映射接口。Map映射中不能包含重复的键;每个键最多只能映射到一个值。
  2. Map 接口提供三种collection 视图,允许以键集值集键-值映射关系集的形式查看某个映射的内容。
  3. Map 映射顺序。有些实现类,可以明确保证其顺序,如 TreeMap;另一些映射实现则不保证顺序,如 HashMap 类。
  4. Map 的实现类应该提供2个“标准的”构造方法:第一个,void(无参数)构造方法,用于创建空映射;第二个,带有单个 Map 类型参数的构造方法,用于创建一个与其参数具有相同键-值映射关系的新映射。实际上,后一个构造方法允许用户复制任意映射,生成所需类的一个等价映射。尽管无法强制执行此建议(因为接口不能包含构造方法),但是 JDK 中所有通用的映射实现都遵从它。

详细参考文档:https://www.cnblogs.com/skywang12345/p/3308931.html


返回Map目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值