数据结构
数据结构
是计算机存储、组织数据的方式。选择适合的数据结构能够提高运行和存储效率
常见数据结构
栈结构:先进后出,一端开口
队列结构:先进先出,依次排队进入
数组结构:根据地址和索引定位,查询快、增删慢
链表结构:结点连接,无索引,查询慢、增删快
泛型
概述
泛型:JDK5后的特性,提供了编译时类型安全检测机制
泛型的作用
把运行时期的问题提前到了编译期间
避免了强制类型转换
泛型的定义格式
<类型>: 指定一种类型的格式
<类型1,类型2…>: 指定多种类型的格式
定义泛型类
定义在类名后面
修饰符 class 类名<类型> { }
示例代码
public class Generic<T> { private T t; public T getT() { return t; } public void setT(T t) { this.t = t; } }
泛型方法
定义在返回值前面
修饰符 <类型> 返回值类型 方法名(类型 变量名) { }
示例代码
public class Generic { public <T> void show(T t) { System.out.println(t); } }
泛型接口
定义在接口名后面
修饰符 interface 接口名<类型> { }
- 应当在实现类或实现类对象中明确泛型
示例代码
public interface Generic<T> { void show(T t); }
类型通配符
类型通配符: <?>
ArrayList<?>: 表示元素类型未知的ArrayList,它的元素可以匹配任何的类型
但是并不能把元素添加到ArrayList中了,获取出来的也是父类类型
类型通配符上限: <? extends 类型>
ArrayListList <? extends Number>: 它表示的类型是Number或者其子类
类型通配符下限: <? super 类型>
ArrayListList <? super Number>: 它表示的类型是Number或者其父类