Java防止方法重复用于相同的目的-不同的参数

Java防止方法重复用于相同的目的-不同的参数,java,methods,code-duplication,Java,Methods,Code Duplication,我有两种几乎相同的方法。我想知道是否有一种方法可以将这两种方法合并为1,这将允许我将这两种类型的映射作为参数。这些方法将写入excel文件。键是excel标题(所有键都在第一行),映射列表是每个键(数据)下的所有内容。有什么独特的想法吗 private void test(Sheet sheet, HashMap<String, List<Double>> map) { for (String var : map.keySet()) {

我有两种几乎相同的方法。我想知道是否有一种方法可以将这两种方法合并为1,这将允许我将这两种类型的映射作为参数。这些方法将写入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++;
        }
    }
private void test(表单、HashMap){
for(字符串变量:map.keySet()){
int rownub=0;
行=sheet.getRow(rownub);
Cell Cell=row.createCell(currColumn);
cell.setCellValue(var);
rowNumb++;
List=map.get(var);
对于(int i=0;i私有无效测试(Sheet Sheet,HashMap){您应该使用泛型:

private <T> void test(Sheet sheet, HashMap<String, List<T>> map) {
    for (String var : map.keySet()) {
        List<T> list = map.get(var);
        for (int i = 0; i < list.size(); i++) {
            row = sheet.getRow(i);
            cell = row.createCell(currColumn);
            cell.setCellValue(list.get(i));
        }
        currColumn++;
    }
}
private void test(表单、HashMap){
for(字符串变量:map.keySet()){
List=map.get(var);
对于(int i=0;i

无论您以前在何处放置对
String
Double
的任何引用,现在放置
T

您都应该使用泛型:

private <T> void test(Sheet sheet, HashMap<String, List<T>> map) {
    for (String var : map.keySet()) {
        List<T> list = map.get(var);
        for (int i = 0; i < list.size(); i++) {
            row = sheet.getRow(i);
            cell = row.createCell(currColumn);
            cell.setCellValue(list.get(i));
        }
        currColumn++;
    }
}
private void test(表单、HashMap){
for(字符串变量:map.keySet()){
List=map.get(var);
对于(int i=0;i

你以前在哪里引用了
String
Double
,现在把
T
放在哪里,第一个想法是:使用泛型。问题:什么是
currColumn
row
cell
-它们是在哪里定义的?啊,废话,我在方法的前半部分去掉了一些东西,让它更容易阅读。Maybe work,也许不是,但你可以试试这个工具:第一个想法:使用泛型。问题:什么是
currColumn
row
cell
-它们的定义在哪里?啊,废话,我在方法的前半部分拿出了一些东西,让它更容易阅读。也许是可行的,也许不是,但你可以试试这个工具:谢谢。我遇到的问题这是最后一行:cell.setCellValue(list.get(i));setCellValue()不知道如果它是类型t该怎么办。它需要类型String或类型double,等等。这是Apachi包POI,用于在重要的情况下写入excel。好的,这是有效的:cell.setCellValue(list.get(i).toString();谢谢!谢谢。我在这方面遇到的问题是最后一行:cell.setCellValue(list.get(I));setCellValue()不知道如果它是类型t该怎么办。它需要类型String或类型double,等等。这是Apachi包POI,如果这很重要的话,可以写入excel。好的,这是有效的:cell.setCellValue(list.get(I).toString()谢谢