~~写在前面的:
【泛型:将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。
泛型类:泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。
和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。
泛型变量作用域为整个类,变量,方法都可以使用。
在泛型中的所有动作,都发生在边界处——–对传递进来的值进行额外的编译期检查,并插入对传递出去值的转型。在边界处擦除,在边界处恢复。 我们就可以下一个这样的结论:边界就是发生动作的地方。
】
Start:
数组的理解:
数组是一种存储某一种类型数据的数据结构。其具有一定的优点以及局限性:
优势:
1>是访问速度最快的一种数据结构。
局限性:
2>数组具备的大小是固定的。进而需要对数组的大小进行考虑从而避免因空间不足造成数组越界抛出异常,或者是空间的大小过剩,浪费资源空间。
3>对于数组中的数据进行人为的添加和删除很麻烦。
考虑如何解决该问题?
解决对此问题的方式:
要存储的数据长度暂时无法确定或者要存储的一组数据数据类型不一致。此时我们就要使用数组队列来解决问题了。利用数组队列将原来的参数进行更加方便的添加和删除。
数组队列的实现:
通过一个类对数组中所要存储的数据进行封装。其中可以存储一种或者多种数据类型。并且在该类中定义加入或者删除数据的抽象方法。
1.将元素加入数组队列中:
public void add(E stu){
if(array.length == 0 || array.length == size){
//在这里创建一个新的数组对象,长度array数组的长度+1
Object [] newarray = new Object[array.length +1];
for(int i = 0;i<array.length;i++){
newarray[i] = array[i];
}
//将新的数组和原来的数组的地址进行交换
array = newarray;
}
//将学生类数组传入array数组中
array[size++]= stu;
}
泛型并不是一种数据结构。如果不去人为指出所要存储的数据类型,可以用所写字母表述任何的数据类型。
2.利用数组队列对数组中的数据进行添加的方法:
public boolean add(int sign,E stu){
return false;
}
public boolean add(int sign,MyArrays<E>ma){
return false;
}
public boolean update(int sign , E stu ){
return false;
}
public int updateAll(E stu,E newstu){
return 0;
}
3.移除数组中数据的方法的实现:
public E remove(int index){
if(index<0||index>=size)
return null;
Object stu = array[index];
for(int i = index + 1;i < size; i++)
array[i-1] = array[i];
size--;
return (E) stu;
}
public boolean remove (E stu){
return false;
}
public int removAll(E stu){
return 0;
}
定义一个具有int类型的返回值方法就可以获得这个数组中的大小
4.对于ArrayList的排序应该如何实现;
对于Arraylist的排序主要是应用对于Comparator接口的实现,以及Collection类的使用。
class MyComparator implements Comparator{
public int compare(Object o1,Object o2) {
Emp e1=(Emp)o1;
Emp e2=(Emp)o2;
if(e1.getSal()<e2.getSal())
return 1;
else
return 0;
}
}