泛型
1.诞生的意义
2.泛型的使用语法
泛型有三种用途1)泛型接口
2)泛型类
3)泛型方法
如何让使用一个泛型类,语法+背后模型
自己去定义一个泛型类
使用和定义泛型方法
泛型为什么出现
顺序表本事是一种抽象类型数据,保存的数据不仅仅是int类型
如果没有泛型的支持,我们必须为每一种要保存的类型定义一个顺序表类.
为了解决这个问题:
第一阶段:1)Object 是所有类的基本类
1.泛型类
class ArrayList<类型变量形参>
class ArrayList
E[]array;
int size;
使用泛型类 new ArrayList();
2.类型推导
ArrayListp = new ArrayList();
3.多类型参数
2.包装类自动装箱+自动拆箱
instance of
构造方法:
ArrayList(); 构造空的顺序表,容量是默认容量
ArrayList(int capacity);构造空的顺序表,容量是capacity
ArrayList(Collection c);构造一个顺序表,把c中的所有元素放到顺序表
八大基本数据类型
1.float java.lang.Float
2.double java.lang.Double
3.int java.lang.Integer
4.short java.lang.Short
5.byte * java.lang.Byte
6.long java.lang.Long
7.char Character java.lang.Character
8.boolean java.lang.Boolean
public class Stack {
private long[] arr;
private int top;
/**
* 默认的构造方法
*/
public Stack(){
arr = new long[10];
top = -1;
}
/**
* 自定义栈的大小的构造参数
* @param maxsize
*/
public MyStack(int maxsize) {
arr = new long[maxsize];
top = -1;
}
/**
* 添加数据
*/
public void push(long value) {
arr[++top] = value;
}
/**
* 移除数据
*/
public long pop() {
return arr[top--];
}
/**
* 查看数据
*/
public long peek() {
return arr[top];
}
/**
* 判断是否为空
*/
public boolean isEmpty() {
return top == 0;
}
/**
* 判断是否满了
*/
public boolean isFull() {
return top == arr.length - 1;
}
}
栈的应用
1.逆波兰表达式 后缀表达式
队列
先进先出(FIFO)
Java中的队列 Quene(intFace)
队首
队尾 push\pop
rear = (rear + 1)%容量
rear = (rear - 1 + 容量) % 容量
public int pop (){
int pop = Queue.back();
queue.pop_back();
return pop;
}
循环队列
树形结构
二叉树
1.度最大为2
2.是一颗有序树
递归思想递归方法的实现
链式表示形式------->
class Node{
int value;
Node left;
Node right;
}
1)深度优先遍历
前序 中序 后续
前序
中序
public static void (Node root){
if(root = null){
return;
}
System.out.println(
medTraversal(root.left);
medTraversal(root);
medTraversal(root.right);
}
后序
public static void (Node root){
if(root = null){
return;
}
System.out.println(left.value);
finalTraversal(root.left);
finalTraversal(root.right);
}
2)广度优先遍历