m плохо знаком с Java и пытается Java 8 map и уменьшить . У меня есть текущий сценарий.
У меня есть класс с именем DS, который выглядит следующим образом:
package com.srm;
public class DS {
private String time;
private int transaction;
private String item;
public DS(String time, int transaction, String item) {
this.time = time;
this.transaction = transaction;
this.item = item;
}
//Simple getters and setter here.
}
Есть несколько элементов с несколькими номерами транзакций.
Map<String, List<DS>> myStream = mylist.stream()
.collect(Collectors.groupingBy(DS::getItem));
здесь mylist содержит записи элементов с номером транзакции и временем транзакции. И эта строка сгруппировала эти записи как
{Cherry me Dried fruit=[com.srm.DS@7699a589//(no. of transactions), com.srm.DS@58372a00, com.srm.DS@4dd8dc3], Brownie=[com.srm.DS@6d03e736]}
Теперь я хочу добавить транзакции для каждого элемента и преобразовать верхний ответ в следующее:
{Cherry me Dried fruit=10, Brownie=1}
Я использовал карту и уменьшил, как следующий код:
Iterator<String> itr = myStream.keySet().iterator();
while (itr.hasNext()) {
if (itr.next() != null) {
List<DS> values = myStream.get(itr.next());
Stream<Integer> lengthStream = values.stream().map(s -> s.getTransaction());
int sum = lengthStream.reduce(0, (x, y) -> x + y);
}
}
что не очень хорошо aproach.i не могу использовать для этого один вкладыш .map () и .reduce (). Возможно ли это сделать без зацикливания ключей объекта?
Любая помощь, пожалуйста!