第三周学习视频(一)
一、向量
import java.util.Vector;
格式:Vector< 向量元素的数据类型 > 变量名 ;
eg. Vector<String> vs = new Vector<String>( );
增加元素:public boolean add(E o)
修改元素:public E set(int index, E element)
删除元素:public void clear( )/public void removeAllElements( )/public E remove(int index)
查询元素:通过迭代器(iterator)获取向量对象的各个元素。
类java.util.Vector的成员方法 public Iteratoriterator( )
接口java.util.Iterator的成员方法 boolean hasNext( )
接口java.util.Iterator的成员方法 E next( )
二、哈希函数或散列函数
哈希表类:java.util.Hashtable/java.util.HashMap/java.util.WeakHashMap
三、泛型
泛型本质上讲是指参数化类型。
类型参数:可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
四、泛型方法
eg. Public static <E> void printArray( E[ ] inputArray )
泛型方法中,类型参数可以用来声明方法的返回类型、参数类型、局部变量类型,充当传递给泛型方法的实参类型的占位符。
类型参数只能表示引用类型(Integer、Double、Character),不能表示基本类型 (int、double、char等)。
五、编译过程的“擦拭”技术
当编译器将泛型方法翻译成java字节码时,会删除类型参数表,并用实际的类型替换类型参数,这一过程被称为擦拭。
默认情况下,所有的泛型类型都会使用Object类型替换。其实是使用“上界” 替换。
六、泛型接口
eg. 如果某个类实现了泛型接口 Comparable<T>,使用该接口中的comparaTo()方法则可比较该类的两个对象。
比较大小可以使用关系运算符“>”、 “<”,但这些运算符不能用于比较引用类型。可考虑采用泛型接口Comparable<T>(位于java.lang包中)。
Public static <T extends Comparable<T>> T maximum(T x, T y, T z) { }
实现了泛型接口Comparable<T>的类引用,通过extends调用泛型接口Comparable<T>。
类型参数列表内调用接口仍使用extends。
对于表达式x.compareTo(y):
如果返回值为0,则表示x和y相等;
如果返回值大于0,则表示x大于y;
如果返回值小于0,则表示x小于y。
此处Comparable被称为类型参数的上界。
=>Public static Comparable maximum (Comparable x, Comparable y, Comparable z) { Comparable max =x;…… }
格式:[ 接口修饰词列表 ] interface 接口名 < 类型参数列表 >
六、泛型类
eg. Public class Stack<E>
elements=(E[ ]) new Object[size];
格式:[ 类修饰词列表 ] class 类名 < 类型参数列表 >
七、总结
泛型方法:
[ 方法修饰词列表 ] < 类型参数列表 > 返回值类型 方法名([形式参数列表]) { 方法体 }
泛型类:
[ 类修饰词列表 ] class 类名 < 类型参数列表 >
[ extends 父类名 ][ implements 接口名称列表 ] { 类体 }
泛型接口:
[ 接口修饰词列表 ] interface 接口名 < 类型参数列表 >
[ extends 接口名称列表 ] { 接口体 }
类型参数的定义格式
1、类型变量标识符
2、类型变量标识符 extends 父类型
3、类型变量标识符 extends 父类型 1 & 父 类型 2 & ... ... & 父类型 n
eg. class J_T < T extends J_C1 & J_C2 >
(class J_c1,interface J_C2)