Yjfox.github.io

Jun Yin's Personal Blog

Follow me onGitHub

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

是有限制的:

  1. list对象集合必须是满数据,举例说明:

通常我们习惯定义一个很大的对象集合

xxxx[] test=new xxxx[MAX],MAX100

,100够大,可以放100个学生信息,如果不够还有increaseSize方法来增大。不过,问题也随之而来,我们通常用不到100这么多,那么剩下的都是空白数据。这时将test传递给Sort的list,那么排序时就会出错,因为没法对比空白数据的。。此非语法错误,不易查找错误根源。

  1. 解决办法:

必须承认,解决问题总是比发现问题容易。。发现问题那是在茫茫大海找一根针,解决问题就是把针挑出来。 上代码(已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);
    }
blog comments powered by Disqus