【发布时间】:2017-02-05 17:56:16
【问题描述】:
我有两种几乎相同的方法。我想知道是否有办法将这两种方法组合成一种方法,这将允许我将两种类型的地图作为参数。这些方法写入一个 excel 文件。关键是 excel 标题(所有键都在第一行),映射列表是每个键下方的所有内容(数据)。有什么独特的想法吗?
private void test(Sheet sheet, HashMap<String, List<Double>> map) {
for (String var : map.keySet()) {
int rowNumb=0;
Row row = sheet.getRow(rowNumb);
Cell cell = row.createCell(currColumn);
cell.setCellValue(var);
rowNumb++;
List<Double> list = map.get(var);
for (int i = 0; i < list.size(); i++) {
row = sheet.getRow(rowNumb);
cell = row.createCell(currColumn);
cell.setCellValue(list.get(i));
}
currColumn++;
}
}
private void test(Sheet sheet, HashMap<String, List<String>> map) { <-- takes in String list rather thand Double.
for (String var : map.keySet()) {
int rowNumb=0;
Row row = sheet.getRow(rowNumb);
Cell cell = row.createCell(currColumn);
cell.setCellValue(var);
rowNumb++;
List<String> list = map.get(var); <---- Only thing that is different
for (int i = 0; i < list.size(); i++) {
row = sheet.getRow(rowNumb);
cell = row.createCell(currColumn);
cell.setCellValue(list.get(i));
}
currColumn++;
}
}
【问题讨论】:
-
第一个想法:使用泛型。问题:
currColumn、row和cell是什么 - 它们在哪里定义? -
废话,我在方法的前半部分取出了一些东西,以便于阅读。
-
或许有效,或许无效,但你可以试试这个工具:pmd.github.io/pmd-5.5.2/usage/cpd-usage.html
标签: java methods code-duplication