对象群体的组织

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第七章对象群体的组织JAVA语言程序设计2目录7.1对象数组7.3集合(Collection,Map)7.4本章小结37.1对象数组数组–在Java提供的存储及随机访问对象序列的各种方法中,数组是效率最高的一种类型检查边界检查–优点数组知道其元素的类型编译时的类型检查大小已知–代价数组对象的大小是固定的,在生存期内大小不可变4对象数组–数组元素是类的对象–所有元素具有相同的类型–每个元素都是一个对象的引用对象数组7.1对象数组(续)5静态初始化:在声明和定义数组的同时对数组元素进行初始化,例如:–BankAccount[]accounts={newBankAccount(“Zhang,100.00),newBankAccount(“Li,2380.00),newBankAccount(“Wang,500.00),newBankAccount(“Liu,175.56),newBankAccount(“Ma,924.02)};动态初始化:使用运算符new,需要经过两步:–首先给数组分配空间typearrayName[]=newtype[arraySize];–然后给每一个数组元素分配空间arrayName[0]=newtype(paramList);…arrayName[arraySize-1]=newtype(paramList);7.1.1用数组存储对象(续)——对象数组的初始化对象数组6使用数组存储一个班的学生信息及考试成绩。学生信息包括学号、姓名、三门课(英语、数学、计算机)的成绩及总成绩。首先声明学生类Student–属性包括学号(id),姓名(name),英语成绩(eng),数学成绩(math),计算机成绩(comp),总成绩(sum)–方法包括构造方法,get方法,set方法,toString方法,equals方法,compare方法(比较两个学生的总成绩,结果分大于,小于,等于),sum方法(计算总成绩)–实现Serializable接口,以便对象持久化,7.1.1用数组存储对象(续)——例7_1对象数组7importjava.io.*;publicclassStudentimplementsSerializable{privateStringid;//学号privateStringname;//姓名privateinteng;//英语成绩privateintmath;//数学成绩privateintcomp;//计算机成绩privateintsum;//总成绩publicStudent(Stringid,Stringname,inteng,intmath,intcomp){this.id=id;this.name=name;this.eng=eng;this.math=math;this.comp=comp;sum();//计算总成绩}7.1.1用数组存储对象(续)——例7_1对象数组8publicStudent(Students){this.id=s.id;this.name=newString(s.name);this.eng=s.eng;this.math=s.math;this.comp=s.comp;sum();//计算总成绩}publicvoidsetId(Stringid){this.id=id;}publicvoidsetName(Stringname){this.name=name;}7.1.1用数组存储对象(续)——例7_1对象数组9publicvoidsetEng(inteng){this.eng=eng;sum();//计算总成绩}publicvoidsetMath(intmath){this.math=math;sum();//计算总成绩}publicvoidsetComp(intcomp){this.comp=comp;sum();//计算总成绩}publicStringgetId(){returnid;}7.1.1用数组存储对象(续)——例7_1对象数组10publicStringgetName(){returnname;}publicintgetEng(){returneng;}publicintgetMath(){returnmath;}publicintgetComp(){returncomp;}publicintgetSum(){returnsum;}voidsum(){this.sum=eng+math+comp;}7.1.1用数组存储对象(续)——例7_1对象数组11publicStringtoString(){returngetId()+\t+getName()+\t+getEng()+\t+getMath()+\t+getComp()+\t+getSum();}publicbooleanequals(Objectx){if(this.getClass()!=x.getClass())returnfalse;Studentb=(Student)x;return(this.getId().equals(b.getId()));}//比较成绩大小,当前对象成绩比参数对象成绩大时返回1,相等时返回0,其它返回-1.publicintcompare(StudentA){if(this.getSum()A.getSum())return1;elseif(this.getSum()==A.getSum())return0;elsereturn-1;}}7.1.1用数组存储对象(续)——例7_1对象数组12下面声明班级类StudentClass:–属性包括班级名称(name),容量(capacity),学生(students),实际人数(size)。–方法包括构造方法,get方法,set方法,toString方法。publicclassStudentClass{privateStringname;//班级名称staticintcapacity=40;//最大容量privateStudentstudents[];//学生privateintsize;//实际人数7.1.1用数组存储对象(续)——例7_1对象数组13publicStudentClass(Stringname,intsize){this.name=name;this.size=size;students=newStudent[capacity];}publicStringgetName(){returnname;}publicintgetCapacity(){returncapacity;}publicStudent[]getStudents(){returnstudents;}7.1.1用数组存储对象(续)——例7_1对象数组14publicintgetSize(){returnsize;}publicvoidsetName(Stringname){this.name=name;}publicvoidsetCapacity(intcapacity){this.capacity=capacity;}publicvoidsetSize(intsize){this.size=size;}publicvoidsetStudents(Student[]students){for(inti=0;isize;i++)this.students[i]=newStudent(students[i]);}7.1.1用数组存储对象(续)——例7_1对象数组15publicStringtoString(){Strings;s=班级:+name+\t+容量:+capacity+\t+实际人数:+size+\n\n;s=s+“学号”+“\t”+“姓名”+“\t”+“英语”+“\t”+“数学”+“\t”+“计算机”+\t+总成绩\n;for(inti=0;isize;i++)s=s+students[i].getId()+\t+students[i].getName()+\t+students[i].getEng()+\t+students[i].getMath()+\t+students[i].getComp()+\t+students[i].getSum()+\n;returns;}}7.1.1用数组存储对象(续)——例7_1对象数组16下面声明测试类Tester1(其中Keyboard类的声明见第3章例3-12),为测试简单,仅生成具有5名学生的班级,5名学生的信息从键盘输入,为了避免以后再重复输入,可将输入的学生信息保存到文件中importjava.io.*;publicclassTester1{publicstaticvoidmain(Stringargs[]){Studentstudents[];StudentClassaClass=newStudentClass(软件0201,5);students=newStudent[5];for(inti=0;i5;i++)students[i]=newStudent(getAStudent(i+1));aClass.setStudents(students);System.out.println(aClass);7.1.1用数组存储对象(续)——例7_1对象数组17//将学生信息保存到文件stu.ser中。try{FileOutputStreamfo=newFileOutputStream(stu.ser);ObjectOutputStreamso=newObjectOutputStream(fo);for(inti=0;i5;i++)so.writeObject(students[i]);so.close();}catch(Exceptione){System.out.println(e);}}7.1.1用数组存储对象(续)——例7_1对象数组18publicstaticStudentgetAStudent(inti){Studentstudenti;System.out.println(输入第+i+个学生的信息:);System.out.print(学号:);Stringid=Keyboard.getString();System.out.print(姓名:);Stringname=Keyboard.getString();System.out.print(英语成绩:);inteng=Keyboard.getInteger();System.out.print(数学成绩:);intmath=Keyboard.getInteger();System.out.print(计算机成绩:);intcomp=Keyboard.getInteger();studenti=newStudent(id,name,eng,math,comp);returnstudenti;}}7.1.1用数组存储对象(续)——例7_1对象数组19运行结果如下(其中学生信息的输入只显示一部分):输入第1个学生的信息:学号:250201姓名:李红英语成绩:88数学成绩:76计算机成绩:60输入第2个学生的信息:……班级:软件0201容量:40实际人数:5学号姓名英语数学计算机总成绩250201李红887660224250202张林786780225250203董玉梅868075241250204张力706875213250205何为8090782487.1.1用数组存储对象(续)——例7_1运行结果对象数组20查找–也称为检索,就是从一组数据中找出所需的具有某种特征的数据项–顺序查找对所存储的数据从第一项开始(也可以从最后一项开始),依次与所要查找的数据进行比较,直到找到该数据或将全部元素都找完还没有找到该数据为止7.1.1用数组存储对象(续)——为班级类添加查找方法对象数组21已知学生的学号,查找此学生是否存在。如果存在,返回其在数组中的下标位置;如

1 / 93
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功