Добрый день. Есть такой метод.
private List<String[]> getData(Map<String, List<Map<String, String>>> value) {
List<String[]> list = null;
Map<String, List<Map<String, String>>> map1 = new HashMap<String, List<Map<String, String>>>(value); // value содержит в себе данные в виде Map<String, List<Map<String, String>>>
...
return list; // List<String[]>
}
мне нужно получить List<String[]>, в котором бы лежали данные из значений map. По идее внутреннюю Map(String, String) мне нужно преобразовать в string[ключ-значение] и затем залить в list.
Подскажите, как это сделать?
Можно воспользоваться flatMap из предыдущего вопроса, добавив преобразование Map<String,String> в String[]
Преобразование делается с помощью метода map.
Для преобразование используем метод entrySet получив набор пар ключ-значение, отображаем этот набор в набор строк, с помощью функции map, и результат собираем в массив с помощью функции toArray
В итоге код может выглядеть так:
List<String[]> list = map.values()
.stream()
.flatMap(List::stream)
.map(q-> q.entrySet()
.stream()
.map(entry -> entry.getKey() + "-" + entry.getValue())
.toArray(String[]::new)
)
.collect(Collectors.toList());
Пример работы на IdeOne.com
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости