Как написать код Java 8 Stream для следующего кода?

List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1");
List<Integer> addList=new ArrayList<Integer>();

for(String listobj:myList) {
    String appendedobj=listobj+"%";
    List<Integer> intlist=myMethod(appendedobj,listobj);
    addList.addAll(intlist);
}


public list<Integer> mymethod(appendedobj,listobj)
{
    do something and retrurn list of integers;
}

Я хочу преобразовать это в код java 8 Stream, но я не уверен, как вызвать myMethod с двумя аргументами.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас есть цикл, который создает для каждого элемента входного списка список элементов, которые нужно добавить в выходной цикл. В этом случае можно использовать flatMap.

List<String> addList =
    myList.stream()
          .flatMap(listobj -> myMethod(listobj+"%",listobj).stream())
          .collect(Collectors.toList());

Обновлено: я не уверен в типах выходных List и List, возвращаемых mymethod(). Вы смешали List<String> с List<Integer> в своем коде (вы не можете вернуть List<String> из mymethod и назначить его List<Integer>).

Другие вопросы по теме