【发布时间】:2016-11-02 14:16:54
【问题描述】:
您好,我有两段长代码,我觉得可以提高效率,但我似乎想不出办法。
基本上,我有一个报告列表,我遍历与记录日期匹配的列表以获取某一年的所有报告。
接下来我为每个月创建了 12 个列表,以按月分隔报告。
基本上我在年度列表中逐一检查该年度的每个报告并检查月份的字符并将它们分开如下-
for (int i = 0; i < yearlyReportList.size(); i++) {
if (yearlyReportList.get(i).getDateTime().charAt(5) == '0' && yearlyReportList.get(i).getDateTime().charAt(6) == '1') {
janReports.add(yearlyReportList.get(i));
}
if (yearlyReportList.get(i).getDateTime().charAt(5) == '0' && yearlyReportList.get(i).getDateTime().charAt(6) == '2') {
febReports.add(yearlyReportList.get(i));
}
if (yearlyReportList.get(i).getDateTime().charAt(5) == '0' && yearlyReportList.get(i).getDateTime().charAt(6) == '3') {
marchReports.add(yearlyReportList.get(i));
}
....
接下来我像这样平均每个月需要的数据-我几乎复制并粘贴了 12 次,然后每个月都更改它-
if (janReports.size() == 0) {
avgJanData = 0;
} else {
for (int i = 0; i < janReports.size(); i++) {
janDataSum = janDataSum + janReports.get(i).getData();
}
avgJanData = janDataSum / janReports.size();
}
....
但是必须有一种更有效的方法,然后像这样复制粘贴这段代码对吗?
谁能给我一个如何让这段代码更好的例子?
感谢您的帮助。
【问题讨论】:
-
使用嵌套的 if 语句。最外层只测试条件
yearlyReportList.get(i).getDateTime().charAt(5) == '0'。对于另一个块,您可以使用forEach循环浏览月度报告。