算法类
如果方法需要返回多个值,就先将值存入集合或数组,再返回集合或数组,建议存入集合,更方便
基本查找
折半查找
数据必须有序
循环条件 min<=max
插值查找
数据有序
分块查找
选择排序
复制数组:System.arraycopy()
arrays类
lambda表达式
可以简化匿名内部类的书写
函数式编程-强调的是做什么 --lambda表达式
函数式接口都有一个注解@FunctionalInterface
所有集合
单列集合 – 存单个数据
双列集合–存一对数据
list–添加数据 有序,可重复,有索引
set–添加数据 无序 不重复,无索引
(序 存和取的顺序)
collection
collection的遍历方式–迭代器便利,增强for便利,lambda表达式遍历
迭代器不依赖索引
增强for遍历
可以使用集合名+for直接得到增强for的书写格式
修改增强for中的变量,不会改变集合中原本的数据
list
有序,有索引,可重复
继承了collection的方法
集合可以直接打印,查看集合中的元素
sout(list);
add(i,对象)加入指定元素,其余元素依次向后移动
list的遍历方式
迭代-增强for-列表迭代器-lambda表达式遍历-普通for遍历
列表迭代器是list独有的,set集合用不了哦
list本身是一个接口,所以需要使用多态的形式创建对象
‘’’
list list=new ArrayList<>();
‘’’
数据结构
栈–后进先出–方法运行时也是这样
队列–先进先出
数组-内存连续,随机查取,删除效率低
链表–内存中结点不连续,查询慢,增删快
泛型
<引用数据类型>
泛型:
ArrayList<引用类型> list=new ArrayList<>(); 添加指定类型数据
ArrayList list=new ArrayList<>();
- 此列表可以添加任意类型的数据
- 但是添加在列表里面的数据都是object类型,不能访问子类的特有功能,object是顶级父类,如果想要访问数据,需要强制转换类型,但是由于数据类型不一致,容易导致强转出问题,,所以引入了泛型
泛型-统一数据类型,编译的时候,避免了强制转换出现的异常
泛型中不能写基本数据类型,要写基本数据类型的包装型
执行具体类型后,也可以传入该类型或者其子类类型
若不写泛型,则默认为object类型
分类
泛型类:
泛型方法
工具类的构造方法私有化,不让外界取建立对象,其余方法静态化
注意这里的addAll1和2 都可以 2可以添加许多个数据,而1只能添加4个,工具类的构造方法需要私有化,且方法需要静态化,需要使用的时候用类名调用,因为只需要一个方法中指定类型,所以使用泛型方法,泛型添加在修饰符后面
泛型接口:
方式一:创建对象之后,只能添加指定类型的数据
方式二:若类是泛型类,在创建对象的时候,就需要写泛型 如下string
泛型不具备继承性
数据具有继承性
//参数可以传递任意数据类型
public static void method(ArrayList list){
}
通过通配符可以传递相关类型的数据
用于定义方法类接口时,类型不确定时可以用
继承体系中可以用,
限定类型的范围
树
二叉树–任意结点的度数小于等于2
遍历-前序,中序,后序,层序遍历
二叉查找树-小的在左,大的在右
平衡二叉树–平衡因子为1,0,-1