я хочу преобразовать в поток Java 8 в этом блоке?

Путь к большому проекту - использовать диспетчер пакетов. Есть несколько хороших вариантов. Возможно, в окнах и визуальной студии вы можете использовать неуправляемые vcpkg или NuGet.

Если вы не можете использовать диспетчер пакетов по какой-то причине, следующая вещь должна состоять в том, чтобы зафиксировать все зависимости от репозитория GIT. Если вы ориентируетесь только на платформы Windows, такие как окна 8 или 10, и хотите поддерживать только VS2017, то компиляция зависимостей не является проблемой. Недостатком является то, что репо станет огромным.

Для крошечного школьного проекта последний вариант жизнеспособен.

0
задан Stefan Zobel 20 January 2019 в 14:51
поделиться

2 ответа

Вы можете сделать это так,

Collection<Product> productsByName = tmpList.stream()
    .collect(Collectors.toMap(Product::getName, 
        Function.identity(), 
        (p1, p2) -> new Product(p1.getName(),
            p1.getCostIn() + p2.getCostIn(), p1.getCostOut() + p2.getCostOut())))
    .values();
0
ответ дан Ravindra Ranwala 20 January 2019 в 14:51
поделиться

Вы можете map и collect во время потоковой передачи

List<Product> productList = proMap.keySet().stream()
        .map(productName -> new Product(productName,
                proMap.get(productName).stream().mapToDouble(Product::getCostIn).sum(),
                proMap.get(productName).stream().mapToDouble(Product::getCostOut).sum()))
        .collect(Collectors.toList());

, с другой стороны, если бы вы искали costIn / costOut по названию продукта, вы могли бы непосредственно сохранить их сумму против конкретное название продукта в то время как groupingBy, например

Map<String, Double> costIn = tmpList.stream()
        .collect(Collectors.groupingBy(Product::getName,
                Collectors.summingDouble(Product::getCostIn)));
<час>
0
ответ дан Naman 20 January 2019 в 14:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: