戚权20201008

知识点:

1.map:

  • Map:双列数据,存储key-value对的数据 ---类似于高中的函数:y = f(x)

    • HashMap:作为Map的主要实现类;线程不安全的,效率高;存储null的key和value
    • LinkedHashMap:保证在遍历map元素时,可以照添加的顺序实现遍历。
      • 原因:在原的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素。
      • 对于频繁的遍历操作,此类执行效率高于HashMap。
    • TreeMap:保证照添加的key-value对进行排序,实现排序遍历。此时考虑key的自然排序或定制排序
    • 底层使用红黑树
    • Hashtable:作为古老的实现类;线程安全的,效率低;不能存储null的key和value
    • Properties:常用来处理配置文件。key和value都是String类型
  • HashMap的底层:数组+链表 (jdk7及之前)

    ​ 数组+链表+红黑树 (jdk 8)

1.1存储结构的理解:

Map中的key:无序的、不可重复的,使用Set存储所的key ---> key所在的类要重写equals()和hashCode() (以HashMap为例)
Map中的value:无序的、可重复的,使用Collection存储所的value --->value所在的类要重写equals()
一个键值对:key-value构成了一个Entry对象。
Map中的entry:无序的、不可重复的,使用Set存储所的entry

image-20201008224250819

1.2常用的方法

  • 添加:put(Object key,Object value)
  • 删除:remove(Object key)
  • 修改:put(Object key,Object value)
  • 查询:get(Object key)
  • 长度:size()
  • 遍历:keySet() / values() / entrySet()

总结:

今天主要学习了Map,发现了这些底层的东西十分难,这就是数据结构的难学的原因吧,但是这些十分重要.感觉这几天教的自己学的有些吃力了.也许是自己没有预习好和复习好吧.

标签

评论

this is is footer