JAVA对象集合作为参数传递的限制
A tiny brief introduce how to pass array object (such as objective[] name = new objective[number]) as a parameter
- Context:
java教科书P53X,有个class Sort,内含
selectionSort(),insertionSort()
顾名思义,选择排序&插入排序 除了Sort 类,还有一个contact类,implements了comparable,是它的接口 重构了compareTo方法和equals方法。
- Problem:
重点来了,151大作业studentManager要给学生信息、用户信息排序 本着拿来就用的原则,把class Sort的算法拿来放自己程序上,结果。。 HLL的运行出错。。一白天就写完的程序硬生生拖到了第二天 仔细检查,构造各种环境,让程序在各种出错情况下输出变量数据,分析后重大发现
- Solution:
Sort类接收的实例参数
Comparable[] list
是有限制的:
- list对象集合必须是满数据,举例说明:
通常我们习惯定义一个很大的对象集合
xxxx[] test=new xxxx[MAX],MAX=100
,100够大,可以放100个学生信息,如果不够还有increaseSize方法来增大。不过,问题也随之而来,我们通常用不到100这么多,那么剩下的都是空白数据。这时将test传递给Sort的list,那么排序时就会出错,因为没法对比空白数据的。。此非语法错误,不易查找错误根源。
- 解决办法:
必须承认,解决问题总是比发现问题容易。。发现问题那是在茫茫大海找一根针,解决问题就是把针挑出来。 上代码(已class studentEnrol为例):
public void sortStudent() {
studentRecord[] temp=new studentRecord[count];
for(int i=0;i<count;i++)
temp[i]=record[i];
record=temp;
listSort.insertionSort(record);
}