Java stream - Как go просмотреть список, показать элементы и собрать их в одной строке - PullRequest
2 голосов
/ 23 апреля 2020

У меня есть следующее:

Map<String, String> carMap;
List<Car> cars = ......

carMap = cars.stream
.collect(Collectors.toMap(key -> key.getValue(), key -> key.getColor()));

Я перебираю машины и хочу показать на экране, что входит в карту. Я мог бы сделать что-то подобное после сбора карты, но я не хочу снова go по списку:

cars.stream()
      .forEach(System.out::println)

Есть ли способ провести sysout в этой строке?

carMap = cars.stream
.collect(Collectors.toMap(key -> key.getValue(), key -> key.getColor()));

Я пытался с forEach после потока, но, очевидно, не работает

1 Ответ

3 голосов
/ 23 апреля 2020

Если это просто для целей отладки, и вы хотите собирать и печатать, вы можете просто использовать peek здесь -

Map<String, String> carMap = cars.stream()
    .peek(c -> System.out.println("Value: " + c.getValue() + " and Color: " + c.getColor()))
    .collect(Collectors.toMap(key -> key.getValue(), key -> key.getColor()));
...