У меня есть такой класс.
public class Foo {
private String prefix;
private String sector;
private int count;
}
Учитывая список foo:
//Args: prefix, sector, count
fooList.add(new Foo("44",,"RowC", 1 ));
fooList.add(new Foo("1",,"Rowa", 1 ));
fooList.add(new Foo("1",,"RowB", 1 ));
fooList.add(new Foo("1",,"Rowa", 1 ));
И мне нужно вернуть запрос на объект , отсортированный по префиксу как c вот так:
{
"1": {
"Rowa": "2",
"RowB": "1"
},
"44": {
"RowC": "1"
}
}
Итак, проблема в том, что я должен сгруппировать список по префиксу, а затем показать, каждый сектор и количество (*) элементов в списке с помощью тот же ряд и сектор. Насколько я понял, использую поток вот так:
fooList.stream()
.collect(Collectors.groupingBy(
Foo::getPrefix,
Collectors.groupingBy(
Foo::getSector,
Collectors.mapping(Foo::getSector , Collectors.counting())
)
));
Проблема в том, что приведенный выше код состоит в том, что счетчик является длинным, и мне нужно возвращаться как строка. Я пытался с .toString, но он дает мне ошибку (может присвоить java .lang.String для java .util.stream.Collector).
ОБНОВЛЕНИЕ
С помощью Андреаса и Намана теперь я могу отобразить счет как строку. Мне просто нужно отсортировать по префиксу.
Кто-нибудь может мне помочь?