Как сгруппировать данные в формате csv, указав c имя столбца в строке, используя только Java 7 - PullRequest
1 голос
/ 03 апреля 2020

Формат csv:

Строка1: с1, с2, с3, с4, с5

Строка2: 1, а, б, c, д

Строка3 : 1, n, b, c, l

Row4: 2, j, k, c, l

Row5: 3, a, i, v, i

Строка 6: 1, a, b, c, d

Строка 7: 1, a, b, u, i

Группировка должна выполняться на основе столбца c1, c2, c3, если все эти три значения столбцов одинаковы, сгруппируйте их следующим образом:

GROUP1: строки 2 и строки 7 одинаковы, и карта должна быть Map (Map (String, String), Map (String, String) ))

т.е. один ключ {c1,1}, {c2, a}, {c3, b} (снова пара значений ключа)

с несколькими значениями, такими как

{c4, c}, {c5, d} (пара значений ключа)

{c4, u}, {c5, i} (пара значений ключа)

GROUP2: строка 3 не имеет имеют одинаковое значение по отношению к столбцам, поэтому карта должна быть

key {c1,1} {c2, n} {c3, b}

value {c4, c} {c5, l }

Row7 должен быть добавлен к карте ошибок, поскольку строка такая же, как row2

Конечная карта должна быть Map of (group.Num, Objects)

Имя столбца должно быть выбрал из файла свойств, как показано ниже.

public class app3 {
    public static void main(String args[]) throws IOException {
        File CSV_FILE_PATH = new File("csv.csv");
            CsvMapReader mapReader = null;
            try {
                    mapReader = new CsvMapReader(new FileReader(CSV_FILE_PATH), CsvPreference.STANDARD_PREFERENCE);
                    final String[] header = mapReader.getHeader(true);
                    final CellProcessor[] processors = getProcessors();
                    Map<String, Object> customerMap;
                    Map<Integer,Map<String, Object>> finalMap = new HashMap<Integer,Map<String, Object>>();
                    while( (customerMap = mapReader.read(header, processors)) != null ) {
                            finalMap.put(mapReader.getLineNumber(), customerMap); 
                    }
                    } 
            }
            finally {
                    if( mapReader != null ) {
                            mapReader.close();
                    }
            }
    }
    private static CellProcessor[] getProcessors() throws IOException {

        InputStream input = new FileInputStream("fileAttributesconfig.properties");
        Properties prop= new Properties();
            prop.load(input);
        CellProcessor[] processors=new CellProcessor[prop.size()];

        for(int i=0; i< prop.size(); i++){
                  processors[i]=new Optional();
         }

        return processors;
    }
    }

Они провели несколько испытаний, но группировка поддерживается только для 8, но мне нужно использовать java 7. Может ли кто-нибудь помочь мне здесь? Мне нужно больше идей, чтобы прийти сюда

...