当前位置: 首页 > article >正文

Java7

Java7

    • (一)、集合体系
    • (二)、Collection
    • (三)、Collection的遍历方式
      • 3.1迭代器
      • 3.2增强for遍历
      • 3.3 Lambda表达式遍历
    • (四)、List
    • (五)、数据结构
      • 5.1 栈
      • 5.2 队列
      • 5.3 数组
      • 5.4 链表
      • 5.5 树
      • 5.6 红黑树
    • (六)、泛型

(一)、集合体系

单列集合:每次添加一个数据
双列集合:每次添加一对数据

集合体系结构:
在这里插入图片描述

List系列集合:添加的元素是有序、可重复、有索引
有序:存和取的顺序一致
可重复:集合中存储的元素可以重复
有索引: 可以通过索引获取所有元素

Set系列集合:添加的元素是无序、不重复、无索引的元素

(二)、Collection

Collection是单列集合的顶级接口,它的功能所有的单列集合都可以继承使用

常用方法:
在这里插入图片描述
add的返回值:如果往List系列集合添加元素,那么返回值永远是true。如果往Set系列集合添加,如果数据不存在则返回true,反之则返回false

(三)、Collection的遍历方式

3.1迭代器

lterator类,是集合专用遍历方式,不依赖索引
在这里插入图片描述
常用方法:
在这里插入图片描述

注意点:
在这里插入图片描述
如果要第二次遍历,要获取一个新的迭代器对象
如果当前位置没有元素,还要强行调用next,会报错NoSuchElementException

3.2增强for遍历

底层还是一个迭代器
所有的单列集合和数组才能使用增强for遍历

格式:
在这里插入图片描述
快速生成:集合的名字.for +回车

注意细节:
修改增强for中的变量,不会改变集合中原本的数据

3.3 Lambda表达式遍历

在这里插入图片描述
最简化方式:集合名.forEach(s ->sout(s));

(四)、List

在这里插入图片描述
使用add时,如果原来索引的位置上有元素,这个元素会自动往后移

独有的遍历方式:

普通for循环:
集合名.size 表示长度
集合名.fori
i表示索引,利用索引获取元素

列表迭代器:ListInterator
额外添加了一个方法,在遍历过程中可以添加元素(用列表迭代器的add方法)

五种遍历方式对比:
在这里插入图片描述

(五)、数据结构

计算机底层存储、组织数据的方式
8种数据结构:栈,队列,数组,链表,二叉树,二叉查找树,平衡二叉树,红黑树

5.1 栈

特点:后进先出,先进后出
进入栈模型称为 :进/压栈
离开栈模型称为 :弹/出栈
在这里插入图片描述

5.2 队列

特点:先进先出,后进后出
从后端进入队列模型的过程称为:入队列
从前端离开队列模型的过程称为:出队列
在这里插入图片描述
后端进,前端出

5.3 数组

特点:
查询速度快
删除效率低
添加效率极低

5.4 链表

分为单向链表和双向链表(结点包含前一个结点的地址)

链表中的结点都是一个独立的对象,在内存中是不连续的
链表里的每个元素称为 :结点(数据,下个结点的地址)

特点:查询慢,不管查询什么都要从头开始
增删比较快

5.5 树

在这里插入图片描述
节点里有:父节点地址,值,左子节点地址,右子节点地址
度:每一个节点的子节点数量
树高:树的总层数
根节点:最顶层的节点
根节点的左右子树

二叉树:任意节点的度<=2

二叉查找树:
在这里插入图片描述

添加规则:大的存右边,小的存左边,一样的不存
遍历方式:
前序遍历:从根节点开始,按照当前节点,左子节点,右子节点的顺序遍历
中序遍历:左子节点,当前节点,右子节点
后序遍历:左,右,当前
层序遍历:从跟节点开始,一层一层遍历

平衡二叉树:
在二叉查找树上多一个规则:任意节点左右子树高度差不超过1

通过旋转机制保持平衡:当添加完节点不平衡时才会触发

左旋:确定支点(从添加的节点开始找,第一个不平衡的点)

示例1:
在这里插入图片描述

在这里插入图片描述
示例2:
在这里插入图片描述
在这里插入图片描述

右旋:

示例1:
在这里插入图片描述
在这里插入图片描述

示例2:
在这里插入图片描述
在这里插入图片描述

四种触发旋转机制的情况:
1.左左:当根节点左子树的左子树有节点插入,导致二叉树不平衡
一次右旋

2.左右:根节点左子树的右子树有节点插入,导致二叉树不平衡
局部左旋,一次右旋

3.右右:根节点右子树的右子树有节点插入
一次左旋

4.右左:根节点右子树的左子树有节点插入
局部右旋,一次左旋

5.6 红黑树

增删改查性能都很好
自平衡的二叉查找树,每一个节点上都有储存位表示节点的颜色
每一个节点可以是红或黑,它不是高度平衡的,它的平衡通过红黑规则实现

红黑规则:
在这里插入图片描述
添加的节点默认是红色的
调整方案:
在这里插入图片描述

(六)、泛型

在这里插入图片描述
好处:
在这里插入图片描述
Java中的泛型是伪泛型,只在编译时期有效

注:如果不写泛型,默认类型是object
指定泛型类型后,传递数据时,可以传入该类类型或者其子类类型
可以写在类后面,方法上面,接口后面

泛型类:当一个类中,某个变量的数据类型不确定时,就可以定义带有泛型的类
在这里插入图片描述

泛型方法:方法中形参类型不确定时
1.使用类名后面定义的泛型(所有方法都能使用)
2.在方法声明上定义自己的泛型(只有本方法能使用)
在这里插入图片描述

泛型接口:
在这里插入图片描述
使用方式1:实现类给出具体的类型
使用方式2:实现类延续泛型,创建对象时再确定


http://www.kler.cn/a/13680.html

相关文章:

  • 机器学习——SVM的易错题型
  • ES使用小结
  • 时序预测 | MATLAB实现SSA-LSTM、LSTM麻雀算法优化长短期记忆神经网络时间序列预测(含优化前后对比)
  • 在VMmare上安装Windows 2003
  • D3.js(3) path/折线图
  • apple pencil值不值得购买?ipad平替电容笔安利
  • JavaSE-part2
  • Java 线程
  • flutter protobuf插件的安装和使用
  • Harmony OS 开发指南——DevEco Device Tool 安装配置
  • 【java】池技术--连接池 线程池 内存池 进程池等汇总分析
  • Vue之指令详解与自定义指令
  • Guns社区医疗项目
  • 二极管初识
  • java中使用Redis实现分布式锁
  • 二分查找学习总结心得
  • Scala的隐式转换详解
  • 基于Java springboot 疫情在线网课管理系统
  • 从原理聊JVM(一):染色标记和垃圾回收算法
  • Thymeleaf——视图模板技术