Вы можете 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)));
<час> Я ответил на свой собственный вопрос (я думаю). То, что я пытался сделать, было использовать сервисную ссылку для указания на существующий веб-сервис ASP.NET, но снова использующие типы не поддерживаются для старых школьных веб-сервисов. Это только работает с сервисами WCF. Таким образом, я сделал решающий шаг и преобразовал свой веб-сервис в истинный сервис WCF, и теперь он хорошо работает.
У меня была подобная проблема, пока я не определил следующий атрибут в коде так, чтобы пространство имен объектов, связанных с контрактом на обслуживание, было установлено на то же пространство имен как типы, на которые обычно ссылаются.
[assembly: ContractNamespace("YOUR_NAMESPACE_HERE")]