Przemapowanie i grupowanie listy obiektów

0

Mam taką listę obiektów:


List<MyList> mylist = findBy....();

[
  {
    "bookNumber": 333
    "author": 1,
  },
  {
    "bookNumber": 22223,
    "author": 1,
  },
  {
    "bookNumber": 15,
    "author": 1,
  },
  {
    "bookNumber": 143,
    "author": 3,
  },
  {
    "bookNumber": 21234,
    "author": 2,
  }
]

Jak uzyskać taki wynik: czyli grupuje po author i countBook - to ilość książek dla danego autora
Klasa dto

public class Result{
	private Integer authorNumber;
	private Integer countBook;
}
[
  {
    "authorNumber": 1,
    "countBook": 3,
  },
  {
    "authorNumber": 2,
    "countBook": 1,
  },
  {
    "authorNumber": 3,
    "countBook": 1,
  }
]
1

.stream().collect(Collectors.groupingBy(x->x.authorNumber, Collectors.counting())); coś takiego da ci jako wynik Map<Integer, Long> mapujące id -> liczba książek.

0

@Shalom: OK, mniej więcej o to mi chodziło ale potrzebuje to mieć w formie takiego dto (klasa Result) da się?

3

.entrySet().map(entry -> new Result(entry.getKey(), entry.getValue())).collect(Collectors.toList())

0

Super, działa, dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1