我有问题,以简化我的代码与许多地图和列表。
public List<Map<String, Object>> getResultFromExcelFile() throws Exception {
ArrayList<Map<String, Object>> allResults = new ArrayList<>();
Map<String, Object> previousYearResult = new HashMap<>();
Map<String, Object> actYearResult = new HashMap<>();
Map<String, Object> plusOneYearResult = new HashMap<>();
Map<String, Object> plusTwoYearResult = new HashMap<>();
ArrayList<Map<String, Object>> previousYearResultActList = new ArrayList<>();
ArrayList<Map<String, Object>> actYearResultPlanList = new ArrayList<>();
ArrayList<Map<String, Object>> actYearResultFcList = new ArrayList<>();
ArrayList<Map<String, Object>> actYearResultActList = new ArrayList<>();
ArrayList<Map<String, Object>> plusOneYearResultPlanList = new ArrayList<>();
ArrayList<Map<String, Object>> plusOneYearResultFcList = new ArrayList<>();
ArrayList<Map<String, Object>> plusOneYearResultActList = new ArrayList<>();
ArrayList<Map<String, Object>> plusTwoYearResultPlanList = new ArrayList<>();
ArrayList<Map<String, Object>> plusTwoYearResultFcList = new ArrayList<>();
ArrayList<Map<String, Object>> plusTwoYearResultActList = new ArrayList<>();
for (int i = 20; i < 67; i++) {
for (int j = 526; j < 1141; j++) {
if (i < BEGIN_COLUMN_YEAR_MINUS_1 + 12) {
//act
if (findFirstDigit(getWorkBook().getNumber(j, 1)) == 1) {
previousYearResultActList.add(this.buildResultMap(i, j));
}
}
if (i >= BEGIN_COLUMN_YEAR_0 && i < BEGIN_COLUMN_YEAR_0 + 12) {
//plan
if (findFirstDigit(getWorkBook().getNumber(j, 1)) == 3) {
actYearResultPlanList.add(this.buildResultMap(i, j));
}
//fc
if (findFirstDigit(getWorkBook().getNumber(j, 1)) == 2) {
actYearResultFcList.add(this.buildResultMap(i, j));
}
//act
if (findFirstDigit(getWorkBook().getNumber(j, 1)) == 1) {
actYearResultActList.add(this.buildResultMap(i, j));
}
}
if (i >= BEGIN_COLUMN_YEAR_1 && i < BEGIN_COLUMN_YEAR_1 + 12) {
if (findFirstDigit(getWorkBook().getNumber(j, 1)) == 3) {
//plan
plusOneYearResultPlanList.add(this.buildResultMap(i, j));
}
if (findFirstDigit(getWorkBook().getNumber(j, 1)) == 2) {
//fc
plusOneYearResultFcList.add(this.buildResultMap(i, j));
}
if (findFirstDigit(getWorkBook().getNumber(j, 1)) == 1) {
//act
plusOneYearResultActList.add(this.buildResultMap(i, j));
}
}
if (i >= BEGIN_COLUMN_YEAR_2 && i < BEGIN_COLUMN_YEAR_2 + 12) {
if (findFirstDigit(getWorkBook().getNumber(j, 1)) == 3) {
//plan
plusTwoYearResultPlanList.add(this.buildResultMap(i, j));
}
if (findFirstDigit(getWorkBook().getNumber(j, 1)) == 2) {
//fc
plusTwoYearResultFcList.add(this.buildResultMap(i, j));
}
if (findFirstDigit(getWorkBook().getNumber(j, 1)) == 1) {
//act
plusTwoYearResultActList.add(this.buildResultMap(i, j));
}
}
}
}
previousYearResult.put("actList", previousYearResultActList);
actYearResult.put("planList", actYearResultPlanList);
actYearResult.put("fcList", actYearResultFcList);
actYearResult.put("actList", actYearResultActList);
plusOneYearResult.put("planList", plusOneYearResultPlanList);
plusOneYearResult.put("fcList", plusOneYearResultFcList);
plusOneYearResult.put("actList", plusOneYearResultActList);
plusTwoYearResult.put("planList", plusTwoYearResultPlanList);
plusTwoYearResult.put("fcList", plusTwoYearResultFcList);
plusTwoYearResult.put("actList", plusTwoYearResultActList);
allResults.add(previousYearResult);
allResults.add(actYearResult);
allResults.add(plusOneYearResult);
allResults.add(plusTwoYearResult);
return allResults;
}
if (i >= BEGIN_COLUMN_YEAR_0 && i < BEGIN_COLUMN_YEAR_0 + 12) {...}
我想填充3个列表,然后填充到匹配的地图。清空3个列表,并在下一个if条件中再次填充它们,然后将它们传递到匹配映射中。
有人知道我如何最好地实现这一点,从而减少列表的数量吗?谢谢你
似乎三种类型的代码非常相似。您应该创建一个可重用的函数
public ArrayList<Map<String, Object>> readExcel(int beginColumnYear) {
ArrayList<Map<String, Object>> list = new ArrayList<>();
for (int i = 20; i < 67; i++) {
for (int j = 526; j < 1141; j++) {
if (i >= beginColumnYear && i < beginColumnYear + 12) {
if (findFirstDigit(getWorkBook().getNumber(j, 1)) == 3) {
list.add(this.buildResultMap(i, j));
}
...
}
}
}
return list;
}
...
actYearResult.put("planList", readExcel(BEGIN_COLUMN_YEAR_0));
...
此外,还应该优化代码的速度和内存使用
我在某个网站上自动化了一个功能,我想调整表的“Description”列的大小,但在对下面提到的代码执行相同操作时,得到了某种警告或错误,而同样的情况不会发生。 //这是我想要更改宽度的描述列 实际产量如下:- 2019年4月1日8:35:54下午组织。openqa。硒。互动。动作移动到元素 信息:当使用W3C操作命令时,偏移量是从元素的中心开始的——这是我在控制台中得到的警告。 在用户界面上,列
我有以下数据框: 我想按和进行分组,并组合
问题内容: 如上所示是一个列表,我们只需要从中过滤偶数即可。我可以通过使用方法来实现。但是,有没有可能用方法达到相同的目的。希望该方法通过执行给定的BynaryOperation过滤掉所有其他元素,并返回简化列表。 如果我对方法的理解不正确,请告诉我该方法的确切作用。 问题答案: 您对减排的理解是错误的。将对所有元素重复应用一个函数以获得 单个结果 。 您似乎想像做还原 实际上,它确实 尽管这是一
问题内容: 我遵循Presentation Model模式对一些屏幕进行编码。 我把一些豆子放在一个 我将在中显示此列表的内容,这要归功于 我还想同时在组合框(以表单的形式)中显示此列表中的 某些记录* , 并同时 在JList中显示 其他 记录。 *** 这三个屏幕(及其模型)彼此独立 如何管理在我的列表中添加{一个或多个} /删除{一个或多个}并在各处实时查看更改? 我将要编写自己的Obser
根据SCJP的数组列表。大小应该取决于可用内存的大小,但是list.getSize()返回一个整数。假设< code >整数。MAXSIZE是最大值。阵列容量。即int最大允许值
我正在使用spring boot开发客户端应用程序。在运行spring boot应用程序(使用完全可执行的jar)时,x64服务器的内存占用约为190M,x86服务器的内存占用约为110M。 我的jvm选项是(-xmx64m-xms64m-xx:maxpermsize=64m-server),为什么在x64服务器中,内存占用这么大?如何将内存使用量降低到150M以下? 多谢了。