4.7学习总结 java集合进阶

集合进阶

泛型

复制代码
//没有泛型的时候,集合如何存储数据
//结论:
//如果我们没有给集合指定类型,默认认为所有的数据类型都是object类型
//此时可以往集合添加任意的数据类型。
//带来一个坏处:我们在获取数据的时候,无法使用他的特有行为。
//此时推出了泛型,可以在添加数据的时候就把类型进行统
//而且我们在获取数据的时候,也省的强转了,非常的方便,
//1.创建集合的对象
ArrayList<string>list = new ArrayList<>();
//2.添加数据
//list.add(123);
list.add("aaa");
//list.add(new student("zhangsan",123));
//3.遍历集合获取里面的每一个元素
Iterator<string>it = list.iterator();
while(it.hasNext()){
String str = it.next();
//多态的弊端是不能访问子类的特有功能
//obj.length();
//str.length();
System.out.println(str);

泛型可以在很多地方进行定义:

类后面定义:泛型类

方法上面定义:泛型方法

接口后面定义:泛型接口

泛型类:

泛型方法

此时,泛型里面写的是什么类型,那么只能传递什么类型的数据。

弊端:

利用泛型方法有一个小弊端,此时他可以接受任意的数据类型

Student

Ye Fu zi

希望:本方法虽然不确定类型,但是以后我希望只能传递YeFuzi

此时我们就可以使用泛型的通配符:

?也表示不确定的类型

他可以进行类型的限定

?extendsE:表示可以传递E或者E所有的子类类型

?super E:表示可以传递E或者E所有的父类类型

泛型接口

二叉树的遍历:

前序遍历:从根结点开始,然后按照当前结点,左子结点,右子结点的顺序遍历

数中序遍历:从最左边的子节点开始,然后按照左子结点,当前结点,右子结点的顺序遍历

后序遍历:从最左边的子节点开始,然后按照左子结点,当前结点的顺序遍历

层序遍历:一层一层的去遍历

数据结构(平衡二叉树):

规则:任意节点左右子树高度差不超过1

Set系列集合

int index =( 数组长度-1)& 哈希值;

当数组中元素数量达到数组长度*加载因的时候,数组会扩容为原来的两倍

当链表长度大于8而且数组长度大于等于64时,当前链表会自动转成红黑树,提高查找效率。

如果集合中储存的时自定义对象,必须要重写hashCode和equals方法

否则比较的是地址值,一般没有实际意义

LinkedHashSet

TreeSet

总结

相关推荐
无敌贵点大王12 小时前
RTThread学习记录11——RT-Thread 设备模型吃透:UART/ADC/PWM/PIN 到底有什么区别?
c语言·stm32·学习·链表
是翎14 小时前
深度长文|2026产品经理AI实践手册
人工智能·深度学习·学习·自然语言处理·数据挖掘
Linux-lucky14 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
知识分享小能手15 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
AI职业加油站18 小时前
数据要素价值释放年:大数据治理工程师,站上职业新风口
人工智能·学习·职场和发展·数据分析·职场发展
啄缘之间18 小时前
1.【SVA】什么是SVA?
经验分享·学习·测试用例·verilog·sva
sunoo-22919 小时前
【嵌入式裸机开发Day04】i.MX6ULL 蜂鸣器驱动详解:从引脚地址查找到代码实现全流程
arm开发·单片机·嵌入式硬件·学习·串口·裸机
Purple Coder19 小时前
stm32
学习
边境悍匪20 小时前
蜗牛学苑 Java 智能体学习 Day45|Knife4j+SpringBoot3、书城项目整合 MyBatis 思维导图复盘
java·开发语言·vue.js·学习·spring
爱吃苹果的日记本20 小时前
离散数学第五课
学习·离散数学