以下两个方法传入参数类型不一样,但是处理逻辑是一致的,要怎么才能消除重复代码privatevoidsetStudentExamRank(Listlist){Listtemp=Lists.newArrayListWithCapacity(list.size());temp.addAll(list);temp.sort(Comparator.comparingInt(StudentExam::getScore));StudentExame;for(inti=0;i0?i+1:0);}}privatevoidsetStudentClassesTestRank(Listlist){Listtemp=Lists.newArrayListWithCapacity(list.size());temp.addAll(list);temp.sort(Comparator.comparingInt(StudentClassesTest::getScore));StudentClassesTeste;for(inti=0;i0?i+1:0);}}
2 回答

斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
用继承或接口都可以interfaceGrade{intgetScore();}classStudentExamimplementsGrade{publicintgetScore(){//TODO}}classStudentClassesTestimplementsGrade{publicintgetScore(){//TODO}}privatevoidsetStudentClassesTestRank(Listlist){ //...list.sort(Comparator.comparingInt(Grade::getScore));//...}

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