有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何基于字符串生成数组

我有一个记录集,其中包含列product和status

例如:

Product    Status
salt       good
sugar      bad
salt       bad
sugar      good
sugar      good

在后面的报告中,我需要根据状态进行总结,如下所示

summary good 
product_code   sum
sugar          2
salt           1

summary bad 
product_code   sum
sugar          1
salt           1

我正在用excel做报告,从我读到的内容,我可以确定使用多少盐是好是坏

Collections.frequency(collection, key)

here

所以,我想我必须把清单上的好的和坏的分开,然后数一数有多少盐、糖和其他存在的产品。这就是我现在要做的

rs = impl.showOnlyColumn(query);;
            ResultSetMetaData metaData = rs.getMetaData();

            int colProduct = 0;
            int colStatus = 0;

            String dataProd="";
            String dataStat="";
            Map<String, String[]> mapinData= new HashMap<String, String[]>();
            //making column name on excel
            int columnCount = metaData.getColumnCount();
            for (int column = 1; column <= columnCount; column++) {
                label = new Label(column - 1, 2, metaData.getColumnName(column));
                excelSheet.addCell(label);

                // check if column is product or status 
                String columnName = metaData.getColumnName(column).toLowerCase();
                if (columnName.contains("produ")) {
                    colProduct = column;
                } else if (columnName.contains("status")) {
                    colStatus = column;
                }
            }
            //render the data
            int r = 3;
            while (rs.next()) {
                for (int column = 0; column <= columnCount - 1; column++) {
                    String cellValue = (rs.getString(column + 1) == null ? "" : rs.getString(column + 1));
                    label = new Label(column, r, cellValue);
                    excelSheet.addCell(label);
                    if (column == colProduct) {
                        dataProd = cellValue;
                    }else if (column==colStatus) {
                        dataStat = cellValue;
                    }
                }        
                mapinData.put(dataStat,dataProd);
                r++;
            }

            myFirstWbook.write();

问题是我不知道如何根据状态名生成数组

mapinData.put(dataStat,how to make array here?);

然后我将取数组,用于计算具有该状态的乘积之和

如果有什么我描述得不好的,请告诉我,非常感谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    Map<String, List<String>>代替Map<String, String[]>

    rs = impl.showOnlyColumn(query);;
    ResultSetMetaData metaData = rs.getMetaData();
    
    int colProduct = 0;
    int colStatus = 0;
    
    String dataStat="";
    Map<String, List<String>> mapinData= new HashMap<>();
    //making column name on excel
    int columnCount = metaData.getColumnCount();
    for (int column = 1; column <= columnCount; column++) {
        label = new Label(column - 1, 2, metaData.getColumnName(column));
        excelSheet.addCell(label);
    
        // check if column is product or status 
        String columnName = metaData.getColumnName(column).toLowerCase();
        if (columnName.contains("produ")) {
            colProduct = column;
        } else if (columnName.contains("status")) {
            colStatus = column;
        }
    }
    //render the data
    int r = 3;
    while (rs.next()) {
        List<String> dataProdList = new ArrayList<>();
        for (int column = 0; column <= columnCount - 1; column++) {
            String cellValue = (rs.getString(column + 1) == null ? "" : rs.getString(column + 1));
            label = new Label(column, r, cellValue);
            excelSheet.addCell(label);
            if (column == colProduct) {
                dataProdList.add(cellValue);
            } else if (column == colStatus) {
                dataStat = cellValue;
            }
        }
        dataProdList.addAll(mapinData.getOrDefault(dataSet, new ArrayList<>()));
        mapinData.put(dataStat, dataProdList);
        r++;
    }
    
    myFirstWbook.write();