第10讲-Java集合框架
第10讲 Java集合框架
1、知识点
1.1、课程回顾
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集合框架实现了常用的基本数据结构,如:集合、线性表、队列、栈、映射表等。
面试题:LIst,Set,Map有关系没?(继承关系上面说)
2.2、ArrayList
用ArrayList来代替Java中的数组,因为他和数组差不多,有增删改查,并且有容量,但是无需我们手动扩容。
数组实现,查询快,增删慢,线程不安全,轻量级;
2.2.1 创建对象
2.2.2 底层原理
当我们调用无参数的构造函数的时候
底层会给我们创建一个Object[]数组elementData并且初始容量是10.
当我们调用有参数的构造函数的时候
所以ArrayList底层是一个Object[] elementData数组
2.2.3 ArrayList的操作(增删改查)
A、增
B、删
C、改
先删除 再添加 或者直接修改
D、查
总结一句话:ArrayList就是一个有序、可重复、可存null的数组列表
2.3 HashSet 集合
总结一句话:HashSet就是一个 无序、去重、可存null的集合。
2.3.1、HashSet的创建
2.3.2、HashSet的底层原理
面试题:HashSet和HashMap有没有联系?
当我们创建一个HashSet的时候
其实在底层帮我们创建了一个HashMap,也就是说HashSet的底层就是HashMap。
2.3.3、HashSet增删改查
Set的可用方法和List的一样
2.3.4、Set中的迭代器对象(取出数据)
Set 因为无序 没有索引值,所以我们也不能通过下标去取数据,也没有key-value键值映射,所以也不能通过key获取数据。所以Set中有一个迭代器对象,他有一个方法 能获取set中的数据。(后面我们学习jsbc中从ResultSet中获取数据的思想和现在一样)
2.4、HashMap(在面试中 经常会问HashMap的底层实现)
总结一句话:HashMap就是一个key-value的键值隐射对象
2.4.1、HashMap的创建
2.4.2、HashMap的底层原理
当我们创建一个HashMap的时候 其实底层帮我们创建两个一个Node[]对象数组
Node是HashMap的静态内部类
所以 我们 存储到Map中的key-value(“name”:“张三”)数据 都是封装程一个Node对象,可以这样理解
Node n = new Node( ) ;
n. key = "name" ;
n. value = "张三" ;
并将这个对象 存储到Node[ ]数组。
2.4.3、HashMap的增删改查
增/改 使用的是 put(key,value)这个方法
思考问题:key不能重复,那么底层是如果判断两个key是否一样呢?
在API文档中 有很多常用方法
2.4.4、遍历map
第10讲-Java集合框架的更多相关文章
- Java集合框架 10 连问,你有被问过吗?
首先要说一下,本文对这些Java集合框架的面试题只做了一个总结式的回答,对每一道题目,都值得深入去了解一下(什么是扎实基本功,这些就是基本功~~),后续可能对每一道题目拆开独立篇章来深入讲解一下. 大 ...
- Java集合框架详解(全)
一.Java集合框架概述 集合可以看作是一种容器,用来存储对象信息.所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下. 数组与集合的区别如下 ...
- Java集合框架体系JCF
Java 集合框架体系作为Java 中十分重要的一环, 在我们的日常开发中扮演者十分重要的角色, 那么什么是Java集合框架体系呢? 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一 ...
- 我所理解Java集合框架的部分的使用(Collection和Map)
所谓集合,就是和数组类似——一组数据.java中提供了一些处理集合数据的类和接口,以供我们使用. 由于数组的长度固定,处理不定数量的数据比较麻烦,于是就有了集合. 以下是java集合框架(短虚线表示接 ...
- 知识点:Java 集合框架图
知识点:Java 集合框架图 总结:Java 集合进阶精讲1 总结:Java 集合进阶精讲2-ArrayList Java集合框架图 我们经常使用的Arrayist.LinkedList继承的关系挺复 ...
- Java - 27 Java 集合框架
Java 集合框架 早在Java 2中之前,Java就提供了特设类.比如:Dictionary, Vector, Stack, 和Properties这些类用来存储和操作对象组. 虽然这些类都非常有用 ...
- JAVA—集合框架
ref:https://blog.csdn.net/u012961566/article/details/76915755 https://blog.csdn.net/u011240877/artic ...
- Java 集合框架(常用数据结构)
早在Java 2中之前,Java就提供了特设类.比如:向量(Vector).栈(Stack).字典(Dictionary).哈希表(Hashtable)这些类(数据结构)用来存储和操作对象组.虽然这些 ...
- Java-Runoob-高级课程:Java 集合框架
ylbtech-Java-Runoob-高级课程:Java 集合框架 1.返回顶部 1. Java 集合框架 早在 Java 2 中之前,Java 就提供了特设类.比如:Dictionary, Vec ...
随机推荐
- P3195 [HNOI2008]玩具装箱TOY 斜率优化dp
传送门:https://www.luogu.org/problem/P3195 题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任 ...
- 池化层的back proporgation 原理
转载:https://www.jianshu.com/p/6928203bf75b
- HTML5实时语音通话聊天,MP3压缩传输3KB每秒
目录 一.把玩方法 二.技术特性 (1)数据传输 (2)音频采集和编码 (3)音频实时接收和播放 三.应用场景 自从Recorder H5 GitHub开源库优化后,对边录边转码成小语音片段文件实时上 ...
- 「每日五分钟,玩转JVM」:线程共享区
前言 上一篇中,我们了解了JVM中的线程独占区,这节课我们就来了解一下JVM中的线程共享区,JVM中的线程共享区是跟随JVM启动时一起创建的,包括堆(Heap)和方法区()两部分,而线程独占区的程序计 ...
- python 39 socketserver 模块并发通信
socketserver模块 socketserver模块实现一个服务端与多个客户端通信.是在socket的基础上进行了一层封装,底层还是调用的socket. socketserver干了两件事: 1 ...
- Python源码学习Schedule
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- JS核心之DOM操作 下
目录: 1.节点类型之Document类型 2.节点类型之Element类型 3.节点类型之Text类型 4.综合小示例 -- 动态添加外部样式文件 5.查找元素的扩展方法 接上篇,我们先来看常用的三 ...
- .NET Core 学习资料精选:进阶
.NET 3.0 这个月就要正式发布了,对于前一篇博文<.NET Core 学习资料精选:入门>大家学的可还开心?这是本系列的第二篇文章:进阶篇,喜欢的园友速度学起来啊. 对于还在使用传统 ...
- Js 组合键
同时按Ctrl+Enter或Alt+s 先上html代码 <style type="text/css"> #box{width: 500px; height: 500p ...
- 第10章 文档对象模型DOM 10.3 Element类型
Element 类型用于表现 XML或 HTML元素,提供了对元素标签名.子节点及特性的访问. 要访问元素的标签名,可以使用 nodeName 属性,也可以使用 tagName 属性:这两个属性会返回 ...