Generics泛型
定义泛型类
作用
避免了强制类型转换
格式
public class 类名<E>{}
说明:
1. 一般是在创建类的对象时,确定泛型的类型
2. 一旦确定了E是String,那么该泛型类中所有的E都是String
泛型方法
格式
public (static) <E> 返回值类型 方法名(形参){方法体}
说明:当调用方法时,传入的参数是什么类型,方法的泛型就是什么类型
好处:提高了类方法的灵活性
注意:泛型方法必须带泛型参数
泛型接口
格式
public interface 接口名<T>{}
说明
当定义子类实现接口时在接口名的后面确定泛型
当定义子类也是泛型类,那么就在创建子类对象时确定泛型
好处:提高了接口方法的灵活性
泛型通配符
明确
泛型通配符都是在方法的形式参数列表上使用
分类
调用的类 <?> 名:代表所有类型
举例:(Dog <?> dog)
调用的类 <? extends E> 名:代表泛型是E或者是E的子类型
举例:(Dog <? extends Number> dog)
<? super E> 名:代表泛型是E或者是E的父类型
举例:(Dog <? super Number> dog)
队列
线性队列
定义
队列的插入操作只能在队尾操作,队列的删除操作只能在队头操作
因此队列是一种先进先出(First In First Out)的线性表,简称FIFO表
方法
boolean add(E e);
boolean offer(E e);
这两个方法都是在尾部添加元素add()会在长度不够时抛出异常; offer()则不会,只返回false
E element();
E peek();
这两个方法都是查看头部元素 ,返回头部元素,但不改变队列element()会在没元素时抛出异常; peek()则返回null;
E remove();
E poll();
这两个方法都是删除头部元素,返回头部元素,并且从队列中删除remove()会在没元素时抛出异常; poll()返回null;
boolean isEmpty();
判断队列是否为空,如果为空则返回true;否则返回false
环形队列
说明:最大存储元素为长度减一,保持一个格为空
rear和front都是向下走一格才添加或删除上一格的数据,所在位置不添加或删除数据