【问题标题】:How not to put data in a map when a whole row is empty当整行为空时如何不将数据放入地图中
【发布时间】:2020-01-27 13:50:28
【问题描述】:

我正在尝试从列表中制作地图并面临一些困难。 我有一个名为“surveyAnsList”的列表,我想从该列表中仅获取“C 类”数据,并将这些数据放在名为“mapC”的地图中,并将这些地图放在 JSONArray 中。 当我这样做时,我不希望在地图中放置一些空的“answerValue”。

我的数据库就像

'CompanyRegistrationNumber 987-65-43210, RowNum 2, ColNum 3' 行中的空 AnswerValue 应包含在地图中,但 'CompanyRegistrationNumber 123-45-56778, RowNum 2, ColNum 2 中的空 AnswerValues -6' 行不应包含在地图中,因为 RowNum 2 的整个 AnswerValues 为空。

我试过的代码是这样的。

    for(int i=0; i<surveyAnsList.size(); i++){
            String answerType = surveyAnsList.get(i).getAnswerType();

            String rowNum = surveyAnsList.get(i).getRowNum();
            String colNum = surveyAnsList.get(i).getColNum();
            String order1 = surveyAnsList.get(i).getQuestionOrder1();
            String order2 = surveyAnsList.get(i).getQuestionOrder2();
            String answerValue = surveyAnsList.get(i).getAnswerValue();
            String companyRegistrationNumber = surveyAnsList.get(i).getCompanyRegistrationNumber();
            String companyName = surveyAnsList.get(i).getCompanyName();

            String[] answerTypeArr = answerType.split("\\|");
            String typeCAnswer = "";
            String newValue = "";


            String cNum = "";

            Map<String, Object> mapC = new HashMap<>();
            mapC.put("questionOrder1", order1);
            mapC.put("questionOrder2", order2);
            mapC.put("rowNum", rowNum);
            mapC.put("colNum", colNum);
            mapC.put("answerValue", answerValue);
            mapC.put("companyRegistrationNumber", companyRegistrationNumber);
            mapC.put("companyName", companyName);

            if(!jsonArrayC_TN3.contains(mapC)){
                jsonArrayC_TN3.add(mapC);
            }
        }

当然,在这种情况下,地图包括每个空的 AnswerValue。如何实现我想要的?

【问题讨论】:

  • 您可以收集列表中每个 CompanyRegistrationNumber 的行,并在有另一个数字或没有下一行时将它们添加到您的地图中。在将值添加到列表之前,您可以遍历 CurrentComapanyRegistrationNumberList 并检查是否存在至少一个答案。

标签: java sql-server database spring


【解决方案1】:

也许下面的代码可以帮助你

Map<String, List<Integer>> nameMap = new HashMap<>(); // tore the name and index
        Set<String> values = new HashSet<>();  // judge if the whole AnswerValues is null
        for(int i=0; i<surveyAnsList.size(); i++){
            String answerType = surveyAnsList.get(i).getAnswerType();

            String rowNum = surveyAnsList.get(i).getRowNum();
            String colNum = surveyAnsList.get(i).getColNum();
            String order1 = surveyAnsList.get(i).getQuestionOrder1();
            String order2 = surveyAnsList.get(i).getQuestionOrder2();
            String answerValue = surveyAnsList.get(i).getAnswerValue();
            String companyRegistrationNumber = surveyAnsList.get(i).getCompanyRegistrationNumber();
            String companyName = surveyAnsList.get(i).getCompanyName();

            if (!nameMap.keySet().contains(companyRegistrationNumber)) {
                if(values.size() == 0 && i != 0){ // remove the null value map, stored in jsonArrayC_TN3
                    nameMap.get("companyRegistrationNumber").forEach(jsonArrayC_TN3::remove);
                }
                nameMap.put(companyRegistrationNumber, new ArrayList<>());
                values = new HashSet<>();
            }
            if (answerValue != null) {
                values.add(answerValue);
                nameMap.get("companyRegistrationNumber").add(jsonArrayC_TN3.size());
            }

            String[] answerTypeArr = answerType.split("\\|");
            String typeCAnswer = "";
            String newValue = "";


            String cNum = "";

            Map<String, Object> mapC = new HashMap<>();
            mapC.put("questionOrder1", order1);
            mapC.put("questionOrder2", order2);
            mapC.put("rowNum", rowNum);
            mapC.put("colNum", colNum);
            mapC.put("answerValue", answerValue);
            mapC.put("companyRegistrationNumber", companyRegistrationNumber);
            mapC.put("companyName", companyName);

            if(!jsonArrayC_TN3.contains(mapC)){
                jsonArrayC_TN3.add(mapC);
            }
        }

【讨论】:

    猜你喜欢
    • 2022-11-15
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 2017-09-25
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    相关资源
    最近更新 更多