A LISTname core(day)1班 2分2班 3分3班 5分B LISTname core(month)1班 10分2班 20分3班 30分C LISTname core(year)1班 110分2班 120分3班 120分希望最后的结果是D LISTname core(day) core(month) core(year)1班 2 10 1102班 3 20 1203班 5 30 120
3 回答
小草1434
TA贡献106条经验 获得超23个赞
对于这个问题,在基于面向对象的编程可以采取如下做法:
定义一个班级分数的pojo类:ClassCore.java
public 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;
}添加回答
举报
0/150
提交
取消
