当前位置:   article > 正文

适合有编程基础的人看的《韩顺平零基础30天学java》笔记(P531~P553)_韩顺平 零基础30天学会java笔记

韩顺平 零基础30天学会java笔记

写在最前边:

研究生一枚,为后端实习和未来工作打基础。无意间发现韩顺平老师的课程,细心细致,讲课和吴恩达老师一样,都是保姆式讲解,各种基础知识都会补充,爱了。
韩顺平老师课程地址:https://www.bilibili.com/video/BV1fh411y7R8?spm_id_from=333.999.0.0
阅读提醒:本笔试适合有编程语言基础的伙伴阅读,因为本兔兔是本专业的,有c、c++、python 、sql基础,笔记中特别的基础的内容就没有记录。完全零基础的小伙伴建议跟着韩老师的课程自己记录。

Java 基础

第三阶段 java语言中面向对象的一些应用

第四章 集合


在这里插入图片描述



三、Map接口——没有继承任何接口哦!

在这里插入图片描述

1、JDK8中其子类的特点
  • 保存的数据是双列数据:Key——Value
  • 数据保存的位置:是HashMap$Node中,Node又实现了Entry接口。想想HashSet呀!在这里插入图片描述有说法一对k-v是一个Entry。其实并不是,Entry中存放的是k-v的地址,是为了方便程序员对k-v进行遍历。数据真正存放的位置还是Node中
    在这里插入图片描述在这里插入图片描述韩老师解读Node 和 EntrySet的联系:
    在这里插入图片描述Map.Entry提供了重要的方法getKey(),getValue()方法:在这里插入图片描述
  • Map还有keySet()、values()方法直接实现集成所有的Key和Value。和entrySet()方法有异曲同工的作用。
    在这里插入图片描述
  • Map中的Key是不允许重复的!Value可以重复想想HashSet底层是HashMap,可不就是一直在保证Key不重复吗!
    但是特别的,当put一个已有的Key,实际是将这个Key对应的Value进行修改:
    在这里插入图片描述
  • Map中的Key可以存放null,最多存一个;Value也可以存放null,数量无限制
  • 方法的操作对象基本也是Object对象,所以很灵活
  • 通过get(Key)可以得到对应的Value
2、体系结构图

在这里插入图片描述

3、常用方法

(接收的对象一般都是Object类,很灵活)
在这里插入图片描述

4、三种遍历方式

上图包含三种遍历方式:

每种方法中又可以分别使用增强for和迭代器遍历,所以是六种组合遍历方式

方式1:Map的entrySet()方法——取得的是k-v对

在这里插入图片描述

方式2:Map的KeySet()方法——取得的是所有key的集合

根据key的集合,使用Set的两种遍历方法(增强for,iterator)获得key对应的value。
在这里插入图片描述

方式3:Map的Values()方法——取得的是所有Value的集合

Map接口的实现类——HashMap 、HashTable、Properties


○ HashMap类 使用频率最高

1、概念

在这里插入图片描述

2、线程不安全
3、底层存储机制,HashSet已经讲过一遍了。类似

在这里插入图片描述

4、扩容机制和红黑树机制
详见上一篇文章, HashSet中的,一样的

○ HashTable类

1、概念
  • 仍然存放键值对
  • 使用方法同HashMap
  • 线程安全
2、特殊的地方
  • 到现在为止,集合中唯一一个key\Value均不能存放null的类!存放类会抛出异常
3、底层存储机制
  • 底层存储数组不是Node包装在Map.Entry中,而是直接存在Entry数组中!!

在这里插入图片描述

4、底层扩容机制

在这里插入图片描述

5、HashTable子类 Properties类
主要用于 对配置文件 ( .properties )的操作。
可以加载配置文件的数据到 Properties类中,进行读取和修改。

在这里插入图片描述

○ TreeMap类

主要是为了实现自定义排序,使用方法同TreeSet,同时也是TreeSet的底层支持。


总结

1.集合中,到底如何选择类(集合大总结 )

在这里插入图片描述

2.集合中,关于null能否存放的问题总结

在这里插入图片描述

3.集合中,关于 去重机制 的总结

在这里插入图片描述

细节:通过默认无参构造器创建的TreeSet(底层TreeMap)对象的add()方法,要求传入的key的所属的类,是继承Comoarable接口的,因为底层无参构造器的去重机制:

在这里插入图片描述

TreeSet错误使用方法 举例:

在这里插入图片描述

4.HashSet ,HashMap的存储底层是数组 + 链表 + 红黑树,去重机制的hashCode()+equals() ,这就使得我们要注意:

除了add()方法以外,其他删改查操作也是先根据hashCode()+equals()定位到元素呀!!
而且若hashCode()+equals()是对 对象类中 多个属性的 重写 ,那么只要修改了对象中的一个属性,整个hashCode()的数值就不一样了!底层存储位置也会变化!
看题

在这里插入图片描述

5.Vector 与 ArrayList

在这里插入图片描述

6.HashSet , HashMap ,Hashtable的底层存储的对象类型:

HashSet 底层存放的是 Node
HashMap 底层存放的是 多个Node节点 封装而成的一个Map.Entry
Hashtable 底层存放的是 Entry(Entry 不是 Map.Entry)

四、Collections工具类
1、概念
操作List、Set、Map的类(工具类)
提供了一系列静态方法,对集合元素进行排序、修改、查询等操作:在这里插入图片描述在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/986962
推荐阅读
相关标签
  

闽ICP备14008679号