Как не помещать данные в карту, когда целая строка пуста - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь сделать Карту из Списка и сталкиваюсь с некоторыми трудностями.У меня есть список с именем «surveyAnsList», и из этого списка я хотел бы получить только данные типа «С» и поместить эти данные в карты с именем «mapC» и поместить эти карты в JSONArray. И когда я делаю это, я не хочу, чтобы какое-то пустое «answerValue» помещалось в карты.

Моя база данных выглядит как enter image description here

Пустое значение ответа в строке 'CompanyRegistrationNumber 987-65-43210, RowNum 2, ColNum 3' должно быть включено в карту, но пустые значения ответа в 'CompanyRegistrationNumber 123-45-56778, RowNum 2, ColNum2-6 'строка НЕ ​​должна быть включена в карту, потому что все значения ответа для RowNum 2 пусты.

Код, который я пробовал, выглядит следующим образом.

    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);
            }
        }

Конечно, карта включает все пустые значения в этом случае.Как мне добиться того, чего я хочу?

1 Ответ

0 голосов
/ 27 сентября 2019

Может быть, следующий код может помочь вам

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);
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...