以下两个方法传入参数类型不一样,但是处理逻辑是一致的,要怎么才能消除重复代码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 回答

慕工程0101907
TA贡献1887条经验 获得超5个赞
用继承或接口都可以interfaceGrade{intgetScore();}classStudentExamimplementsGrade{publicintgetScore(){//TODO}}classStudentClassesTestimplementsGrade{publicintgetScore(){//TODO}}privatevoidsetStudentClassesTestRank(Listlist){ //...list.sort(Comparator.comparingInt(Grade::getScore));//...}

喵喔喔
TA贡献1735条经验 获得超5个赞
StudentExam和StudentClassesTest继承同一个父类或实现同一个接口比如Student。然后定义方法:publicvoidsetRank(Studente){for(inti=0;ie=temp.get(i); e.setRank(e.getScore()>0?i+1:0);}}调用时传入StudentExam或者StudentClassesTest的实例即可
添加回答
举报
0/150
提交
取消