首页 > 编程语言 >day15_我的Java学习笔记 (Collection、数据结构、List、泛型深入)

day15_我的Java学习笔记 (Collection、数据结构、List、泛型深入)

时间:2024-04-19 11:25:06浏览次数:32  
标签:遍历 Java 元素 List Collection 泛型 二叉树 集合

1.集合概述





2.Collection集合的体系特点


















3.Collection集合常用API

1.添加元素,添加成功返回true,失败返回false


2.清空集合的元素

3.判断集合是否为空,是空返回true,反之为false

4.获取集合的大小

5.判断集合中是否包含某个元素

6.删除某个元素 (如果有多个重复元素,默认删除前面的第一个!)


7.把集合转换成数组

8.把其中一个集合的元素全部导入到另外一个集合中去

4.Collection集合的遍历方式

4.1 方式一:迭代器






4.2 方式二:foreach/增强for循环









4.3 方式三:lambda表达式









5.Collection集合存储自定义类型的对象

①、定义一个电影类,定义一个集合存储电影对象

②、创建3个电影对象,封装相关数据,把3个对象存入到集合中去

③、遍历集合中的3个对象,输出相关信息







6.常见数据结构

6.1 数据结构概述、栈、队列

6.1.1 常见数据结构--栈

栈:后进先出,先进后出
(如:子弹匣,最后装进去的子弹,先发射出去)


6.1.2 常见数据结构--队列

队列:先进先出,后进后出
(如:排队叫号吃饭,先排上号的先吃饭,排号晚的,后吃饭)




6.2 数组

数组:适合查询元素,不适合增删元素 (元素在内存中是连续存储的,查询任意数据耗时相同)

6.3 链表

链表:每个元素结点包含当前结点数据值和下一结点的地址 (元素在内存中是不连续存储的)




6.4 二叉树、二叉查找树

6.4.1 二叉树



6.4.2 二叉查找树


6.5 平衡二叉树




平衡二叉树-左左 (要进行右旋)


平衡二叉树-左右 (先左旋再右旋)





平衡二叉树-右左 (先右旋再左旋)





6.6 红黑树



























7.List系列集合

7.1 List集合特点、特有API








7.2 List集合的遍历方式小结

①、List集合的遍历方式 -- for循环


②、List集合的遍历方式 -- 迭代器






③、List集合的遍历方式 -- foreach


④、List集合的遍历方式 -- Lambda表达式

7.3 ArrayList集合的底层原理 (视频中少了这一节内容)





7.4 LinkedList集合的底层原理

LinkList完成一个队列:入队 + 出队 (先入队先出队,后入队后出队)


LinkList完成一个栈:入栈 + 出栈 (先入栈后出栈,后入栈先出栈)



8.补充知识:集合的并发修改异常问题


集合元素准备数据:

a.迭代器-遍历删除 (用ArrayList,遍历删除,不会报错)






b.foreach-遍历删除 (不能边遍历边删除,会出bug)

c.lambda表达式-遍历删除 (不能边遍历边删除,会出bug)

d.for循环-边遍历边删除 (必须从后面往前遍历,才不会遗漏)

9.补充知识:泛型深入

9.1 泛型的概述和优势














9.2 自定义泛型类













9.3 自定义泛型方法





9.4 自定义泛型接口















9.5 泛型通配符、上下限










标签:遍历,Java,元素,List,Collection,泛型,二叉树,集合
From: https://www.cnblogs.com/SuperLee017/p/18139838

相关文章

  • 使用bat切换java版本环境变量
    使用bat切换java版本环境变量需求有多个项目,每个项目依赖的java版本不同,需要切换java版本。或者想试用java新版本新特性,需要切换java版本。针对以上情况,Windows情况虽然修改一下环境变量JAVA_HOME即可,但也相对繁琐,一开始在找有没有类似nvm这种工具,但是找的过程看到一篇文章......
  • WPF/C#:让绘制的图形可以被选中并将信息显示在ListBox中
    实现的效果如果你对此感兴趣,可以接着往下阅读。实现过程绘制矩形比如说我想绘制一个3行4列的表格:privatevoidButton_Click_DrawRect(objectsender,RoutedEventArgse){intRow=3;intCol=4;for(inti=0;i<Row;i++){......
  • Java的六种线程状态及代码示例
    Java的线程有6个状态,分别是NEW           新建状态。刚new出来的thread,还没有调用start,就是这个状态RUNNABLE     运行状态(分为运行中和就绪)。正在运行,或者等待CPU调度,调用完start,就是这个状态BLOCKED       阻塞状态。还未竞争......
  • Java开发者如何使用RunFlow内置的QLExpress
    本文是为Java开发者写的手册,如果您不是Java开发者可以阅读我们的开发者篇手册,当然如果您感兴趣也可以继续阅读。输入qe进入QLExpress专注模式。执行Java代码比如数学计算:Math.sin(9);执行结果:0.4121184852417566。比如读取系统环境变量:top.myrest.myflow.util.Jackson......
  • JavaScript本地存储的方式有哪些
    Web存储技术1.localStorage特点:长期存储,除非手动删除否则会一直保存在浏览器中,清除缓存或卸载浏览器后消失。存储语法:window.localStorage.setItem(名字,值)获取语法:window.localStorage.getItem(名字)删除语法:window.localStorage.removeItem(名字)作用:删除localStorage......
  • Java BigDecimal出现科学计数法
    JavaBigDecimal出现科学计数法查看BigDecimal的toString()源码,可以发现出现toString()出现科学计数法的原因 privateStringlayoutChars(booleansci){...intcoeffLen=coeff.length-offset;longadjusted=-(long)scale+(coeffLen-1);......
  • java动态代理模式
    Java动态代理模式是Java编程语言中的一种设计模式,它提供了一种在运行时动态创建代理对象的方式。这个模式主要用于实现AOP(面向切面编程)的概念,允许开发者在不修改原有业务逻辑代码的情况下,增加额外的功能,如日志记录、事务管理、权限验证等。在Java中,动态代理模式主要依赖于java.l......
  • JavaScripts浮点数计算问题
    JS数学运算精度问题最近项目上JS做加减乘除这类的运算出现了精度不匹配的问题:例如:0.1+0.2->0.300000000000000040.3-0.2->0.099999999999999980.3*2->0.60.3*0.20.060.3/3->0.09999999999999999Mathjs这个JS库可以解决这类问题:官网链接以下是详细的步骤:终端执......
  • 3.Java基础学习
    Java基础注释单行注释多行注释文档注释publicclassHelloworld{publicstaticvoidmain(String[]args){//单行注释////输出一个HelloworldSystem.out.println("Helloworld");/*多行注释多行注释......
  • Java题目集1-3总结
    (1)前言:第一次大作业的知识点包括类与对象正则表达式以及数组对象和不同类之间的关系;题量较小,难度不大,关键是理清question,test-paper,answer-paper之间的关系。第二次大作业的知识点增加了List,ArrayList,HashMap,三种变长数组的使用,增加了正则表达式的难度,题量增加,难度上升,试卷中的......