У меня есть карта стран со следующим дизайном:
England=24
Spain=21
Italy=10
etc
Затем у меня есть другая карта городов со следующим дизайном:
London=10
Manchester=5
Madrid=7
Barcelona=4
Roma=3
etc
В настоящее время я печатаю эти результаты на экране:
System.out.println("\nCountries:");
Map<String, Long> countryMap = countTotalResults(orderDataList, OrderData::getCountry);
writeResultInCsv(countryMap);
countryMap.entrySet().stream().forEach(System.out::println);
System.out.println("\nCities:\n");
Map<String, Long> citiesMap = countTotalResults(orderDataList, OrderData::getCity);
writeResultInCsv(citiesMap);
citiesMap.entrySet().stream().forEach(System.out::println);
Я хочу записать каждую строку моих двух карт в один и тот же файл CSV. У меня есть следующий код:
public void writeResultInCsv(Map<String, Long> resultMap) throws Exception {
File csvOutputFile = new File(RUTA_FICHERO_RESULTADO);
try (PrintWriter pw = new PrintWriter(csvOutputFile)) {
resultMap.entrySet().stream()
.map(this::convertToCSV)
.forEach(pw::println);
}
}
public String convertToCSV(String[] data) {
return Stream.of(data)
.map(this::escapeSpecialCharacters)
.collect(Collectors.joining("="));
}
public String escapeSpecialCharacters(String data) {
String escapedData = data.replaceAll("\\R", " ");
if (data.contains(",") || data.contains("\"") || data.contains("'")) {
data = data.replace("\"", "\"\"");
escapedData = "\"" + data + "\"";
}
return escapedData;
}
Но я получаю ошибку компиляции в методе writeResultInCsv в следующей строке: .map (this :: convertToCSV)
Это ошибка компиляции, которую я получаю : reason: Несовместимые типы: Запись не может быть преобразована в String []
Как я могу в упрощенном виде указать следующий результат в CSV-файле в Java 8? Вот результат и дизайн, которые я хочу, чтобы мой CSV-файл имел:
Countries:
England=24
Spain=21
Italy=10
etc
Cities:
London=10
Manchester=5
Madrid=7
Barcelona=4
Roma=3
etc