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
提交
取消