小草1434
对于这个问题,在基于面向对象的编程可以采取如下做法:定义一个班级分数的pojo类:ClassCore.javapublic class ClassCore{
private String name;
// 考虑到显示的内容有中文文字,故类型为String
private String dayCore;
private String montyCore;
private String yearCore;
// 省略getter/setter
}
public class ClassCoreList {
private String name;
private String core;
// 省略getter/setter
}然后就是实际的逻辑方法:public void main(){
// 获取并整理成三个分数列表
// 调用deamMain(三个分数列表);
// 调用打印方法pring(list);
}
// 打印
public void print(List<ClassCore> list){
// 遍历列表并且打印格式自己调整
};
// 处理分数
public List<ClassCore> dealMain(
List<ClassCoreList> dayCoreList,
List<ClassCoreList> monthCoreList,
List<ClassCoreList> yearCoreList
){
List<ClassCore> list = new ArrayList();
Map<String,ClassCore> map= new HashMap<>();
map = dealList(map,dayCoreList,0);
map = dealList(map,monthCoreList,1);
map = dealList(map,yearCoreList,2);
for (Entry<String, Object> entry : map.entrySet()) {
list.add(entry.getValue());
}
return list;
}
// 将内容进行调整
public Map<ClassCore> dealList(Map<String,ClassCore> map,List<ClassCoreList> coreList,int flag){
if(map == null){
map= new HashMap<>();
}
ClassCore temp = null;
for(ClassCoreList classCore:dayCoreList ){
if(map.containsKey(classCore.getName())){
temp = map.get(classCore.getName());
}else {
temp = new ClassCore();
temp.setName(classCore.getName());
}
if(flag==0){
temp.dayCore(classCore.getCore);
}else if(flag==1){
temp.monthCore(classCore.getCore);
}else if(flag==2){
temp.yearCore(classCore.getCore);
}
map.put(temp);
}
return map;
}