Формат 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. Может ли кто-нибудь помочь мне здесь? Мне нужно больше идей, чтобы прийти сюда