У меня есть Объект с этой структурой:
public class CategoryDTO {
@JsonProperty("id")
private Long id;
@JsonProperty("parentId")
private Long parentId;
@JsonProperty("name")
private String nameCategory;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private ComissaoPadraoEntity comission;
@JsonProperty("categories")
private List<CategoriaDTO> subcategories;
Я делаю этот метод:
public Map<Long, List<Long>> mapATreeOfCategories(List<CategoryDTO> categories) {
Map<Long, List<Long>> treeCategories = categoires.stream()
.collect(Collectors.toMap(c -> c.getId(),
v -> v.getCategories().stream()
.map(e -> e.getId()).collect(Collectors.toList())));
return treeCategories;
У меня есть две проблемы здесь, первый Te возвращает это:
"1813": [1827,1830,1839,1834,1706,1822,2239,1835,2400,3290,3355,3319],...
OBS: они только обозначают уровень как ключ, а второй - как значение.Он даже рассматривает третий уровень.
если вы посмотрите на приведенную ниже структуру, мне нужно, чтобы возврат пришел следующим образом:
"1813":[1813]
"1827":[1827,1813]
"1830":[1830,1827,1813]
"1831":[1831,1830,1827,1813]
<!--Payload-->
{
"categories": [
{
"id": "1813",
"parentId": null,
"name": "Malas e Mochilas",
"items": 12,
"categories": [
{
"id": "1827",
"parentId": "1813",
"name": "Conjuntos de Malas",
"items": 0,
"categories": [
],
"attributes": null
},
{
"id": "1830",
"parentId": "1813",
"name": "Mochilas",
"items": 4,
"categories": [
{
"id": "1831",
"parentId": "1830",
"name": "Mochila Esportiva",
"items": 0,
"categories": [
],
и второй, я знаю, что этот объект имеет только три уровня, но в будущем, если появится еще один уровень, я хочу предотвратить это.
Я хочу знать, есть ли способ сделать этот метод с лямбда-выражением, как может пройти dep один поиск с лямбда-выражением.Или единственный способ с базовым для каждой структуры?
Спасибо за любую помощь.