Добавление карты в список.Карта создается при зацикливании списка - PullRequest
3 голосов
/ 27 июня 2019

У меня есть getSemiFileInfos() в списке, и я хотел использовать поток, а затем зациклить каждый элемент внутри. Каждый элемент все еще может использовать getItem() или getItem2(). Сначала я создам карту для item и item2 в itemMap, затем сохраню каждый цикл getSemiFileInfos() в виде карты в items списке.

Я хочу, чтобы это было в одной строке. Мне интересно, возможно ли это еще?

private List<Map<String, String>> items;

items = new ArrayList<Map<String, String>>();

Map<String, String> itemMap = new HashMap<String, String>();
file.getFileInfo().getSemiFileInfos().stream().forEach(m-> 
    itemMap.put("item", m.getItem()); 
    itemMap.put("item2", m.getItem2().split(":",1))
);
items.add(mrphMap);

1 Ответ

1 голос
/ 27 июня 2019

Вы можете отобразить каждый элемент вашего Stream в Map с помощью map(), а затем собрать в List:

List<Map<String, String>> items =
    file.getFileInfo()
        .getSemiFileInfos()
        .stream() 
        .map(m-> {
            Map<String, String> itemMap = new HashMap<String, String>();
            itemMap.put("item", m.getItem()); 
            itemMap.put("item2", m.getItem2().split(":",1)); // this doesn't produce a String
                                                             // value so perhaps you are
                                                             // missing some additional logic
                                                             // that would  extract one 
                                                             // String from the String[]
            return itemMap;
        })
        .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...