猿问

怎么消除以下两个方法的重复代码?

以下两个方法传入参数类型不一样,但是处理逻辑是一致的,要怎么才能消除重复代码
privatevoidsetStudentExamRank(Listlist){
Listtemp=Lists.newArrayListWithCapacity(list.size());
temp.addAll(list);
temp.sort(Comparator.comparingInt(StudentExam::getScore));
StudentExame;
for(inti=0;ie=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;ie=temp.get(i);
e.setRank(e.getScore()>0?i+1:0);
}
}
智慧大石
浏览 410回答 2
2回答

慕码人2483693

用继承或接口都可以interfaceGrade{intgetScore();}classStudentExamimplementsGrade{publicintgetScore(){//TODO}}classStudentClassesTestimplementsGrade{publicintgetScore(){//TODO}}privatevoidsetStudentClassesTestRank(Listlist){//...list.sort(Comparator.comparingInt(Grade::getScore));//...}

人到中年有点甜

StudentExam和StudentClassesTest继承同一个父类或实现同一个接口比如Student。然后定义方法:publicvoidsetRank(Studente){for(inti=0;i0?i+1:0);}}调用时传入StudentExam或者StudentClassesTest的实例即可
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答