java基础集合框架增删改查_第10讲-Java集合框架

第10讲 Java集合框架

1、知识点

1.1、课程回顾

0ed0784bf917c9c4b6e3c12dfd1d5f3a.png

11478295.html

1.2、本章重点

1.2.1 List

1.2.2 Set

1.2.3 Map

2、具体内容

2.1、Java集合框架

2.1.1 为什么需要集合框架

因为我们在开发中发现Java中的数组 不好用。Java中的数组有一个问题:定容。我们一旦要存储的数据超出了数组的长度,就需要对数组进行扩容。所以数组在使用的时候不方便,那么Java的研发人员,就基于数组进行了一次封装,从而出现了集合框架。

集合框架,就是一些Java的类。这些类是用来代替Java中的数组,但是你要知道这些类的底层都是基于数组的封装。

2.1.2 Java中集合框架的关系

Java集合框架实现了常用的基本数据结构,如:集合、线性表、队列、栈、映射表等。

d2997017f0fed73c05fbb942dc1c07d5.png

11478295.html

面试题:LIst,Set,Map有关系没?(继承关系上面说)

2.2、ArrayList

用ArrayList来代替Java中的数组,因为他和数组差不多,有增删改查,并且有容量,但是无需我们手动扩容。

数组实现,查询快,增删慢,线程不安全,轻量级;

2.2.1 创建对象

e57d7c2c7b9fdbac89c48ea066aebc3e.png

11478295.html

2.2.2 底层原理

当我们调用无参数的构造函数的时候

ea7810e59b898200b648af8f23a0aae6.png

1aaee6f3f04ef5ecd9ae6a28d19055a6.png

11478295.html

底层会给我们创建一个Object[]数组elementData并且初始容量是10.

11478295.html

当我们调用有参数的构造函数的时候

11478295.html

所以ArrayList底层是一个Object[] elementData数组

2.2.3 ArrayList的操作(增删改查)

A、增

11478295.html

B、删

11478295.html

C、改

先删除 再添加 或者直接修改

D、查

11478295.html

总结一句话:ArrayList就是一个有序、可重复、可存null的数组列表

2.3 HashSet 集合

总结一句话:HashSet就是一个 无序、去重、可存null的集合。

2.3.1、HashSet的创建

11478295.html

2.3.2、HashSet的底层原理

面试题:HashSet和HashMap有没有联系?

当我们创建一个HashSet的时候

11478295.html

其实在底层帮我们创建了一个HashMap,也就是说HashSet的底层就是HashMap。

2.3.3、HashSet增删改查

11478295.html

Set的可用方法和List的一样

11478295.html

2.3.4、Set中的迭代器对象(取出数据)

Set 因为无序 没有索引值,所以我们也不能通过下标去取数据,也没有key-value键值映射,所以也不能通过key获取数据。所以Set中有一个迭代器对象,他有一个方法 能获取set中的数据。(后面我们学习jsbc中从ResultSet中获取数据的思想和现在一样)

11478295.html

2.4、HashMap(在面试中 经常会问HashMap的底层实现)

总结一句话:HashMap就是一个key-value的键值隐射对象

2.4.1、HashMap的创建

11478295.html

2.4.2、HashMap的底层原理

当我们创建一个HashMap的时候 其实底层帮我们创建两个一个Node[]对象数组

11478295.html

Node是HashMap的静态内部类

11478295.html

所以 我们 存储到Map中的key-value(“name”:“张三”)数据 都是封装程一个Node对象,可以这样理解

Node n = new Node( ) ;

n. key = "name" ;

n. value = "张三" ;

并将这个对象 存储到Node[ ]数组。

2.4.3、HashMap的增删改查

11478295.html

增/改 使用的是 put(key,value)这个方法

思考问题:key不能重复,那么底层是如果判断两个key是否一样呢?

11478295.html

在API文档中 有很多常用方法

2.4.4、遍历map

11478295.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值