Получить массив String[] из Map<String, String>

395
23 июля 2017, 09:34

Добрый день. Есть такой метод.

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.

Подскажите, как это сделать?

Answer 1

Можно воспользоваться 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

READ ALSO
KeyboardButton Telegram Api выполняет нажатие на ссылкy

KeyboardButton Telegram Api выполняет нажатие на ссылкy

В чате телеграма при нажате на номер телефона полученный в сообщение всплывает окошко с предложение звонить на номер или нетМожно ли с помощью...

362
Как разрешить конфликт двух JDK?

Как разрешить конфликт двух JDK?

При компиляции у меня все время падает такое предупреждение:

331
Проблемы в использовании android-inapp-billing-v3

Проблемы в использовании android-inapp-billing-v3

Вот так вызываю покупку:

403
Intelij Idea что значит включить все дебаги?

Intelij Idea что значит включить все дебаги?

Нужно помимо обычного дебага запустит еще и спринговый дебаг, как это сделать?

310