以下两个方法传入参数类型不一样,但是处理逻辑是一致的,要怎么才能消除重复代码privatevoidsetStudentExamRank(Listlist){Listtemp=Lists.newArrayListWithCapacity(list.size());temp.addAll(list);temp.sort(Comparator.comparingInt(StudentExam::getScore));StudentExame;for(inti=0;i<temp.size();i++){e=temp.get(i);e.setRank(e.getScore()>0?i+1:0);}}privatevoidsetStudentClassesTestRank(Listlist){Listtemp=Lists.newArrayListWithCapacity(list.size());temp.addAll(list);temp.sort(Comparator.comparingInt(StudentClassesTest::getScore));StudentClassesTeste;for(inti=0;i<temp.size();i++){e=temp.get(i);e.setRank(e.getScore()>0?i+1:0);}}
2 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
用继承或接口都可以interfaceGrade{intgetScore();}classStudentExamimplementsGrade{publicintgetScore(){//TODO}}classStudentClassesTestimplementsGrade{publicintgetScore(){//TODO}}privatevoidsetStudentClassesTestRank(Listlist){ //...list.sort(Comparator.comparingInt(Grade::getScore));//...}
慕田峪7331174
TA贡献1828条经验 获得超13个赞
StudentExam和StudentClassesTest继承同一个父类或实现同一个接口比如Student。然后定义方法:publicvoidsetRank(Studente){for(inti=0;ie=temp.get(i); e.setRank(e.getScore()>0?i+1:0);}}调用时传入StudentExam或者StudentClassesTest的实例即可
添加回答
举报
0/150
提交
取消